日期:2014-05-18  浏览次数:20433 次

请高手解决几个问题
1、   利用脚本查询出邮政编辑是否为空或包括字符或长度不等于空的记录。  
2、   将字符串‘800506’的数据转换为‘1980-05-06’的日期格式。  
3、   利用脚本查询15位身份证号码升级为17位后,与数据库中原有18位身份证的前17位重复的所有数据记录。  
注:15位升级17位的规则如下,在15位身份证的第6位后,加入‘19’后,就可升级为17位。  
4、   利用脚本查询人员名称中不包括汉字的所有数据记录。  
注:人员名称长度为char(6)  


------解决方案--------------------
1、 利用脚本查询出邮政编辑是否为空或包括字符或长度不等于空的记录。
SELECT * FROM TableName WHERE [邮政编号] IS NOT NULL --OR LEN([邮政编号])> 0 这个判断可以不用

2、 将字符串‘800506’的数据转换为‘1980-05-06’的日期格式。
SELECT CONVERT(nchar(10),CAST( '19 '+ '800506 'AS smalldatetime),120)

3、 利用脚本查询15位身份证号码升级为17位后,与数据库中原有18位身份证的前17位重复的所有数据记录。
SELECT * FROM TableName AS A INNER JOIN
(SELECT LEFT([IDCard],17) AS IDCard FROM TableName GROUP BY LEFT([IDCard],17)) AS B
ON B.[IDCard]=LEFT(A.[IDCard],17)

4、 利用脚本查询人员名称中不包括汉字的所有数据记录。
SELECT * FROM TableName WHERE 姓名 LIKE '%[A-Z]% '
注:人员名称长度为char(6)
------解决方案--------------------
1、 利用脚本查询出邮政编辑是否为空或包括字符或长度不等于空的记录。
select * from tablename
where 邮政编辑 is null --为空
or 邮政编辑 like '%[a-z]% ' --包括字符
or --不知道什么是“长度不等于空”


2、 将字符串‘800506’的数据转换为‘1980-05-06’的日期格式。
select convert(varchar(10),cast( '800506 ' as datetime),120)


3、 利用脚本查询15位身份证号码升级为17位后,与数据库中原有18位身份证的前17位重复的所有数据记录。
select * from tablename
where stuff([15位身份证号码],7,0, '19 ')=left([18位身份证号码],17)

4、 利用脚本查询人员名称中不包括汉字的所有数据记录。
保留