如何删除身份证号码中的隐藏字符

在工作中经常要导入电子表格到数据库中对比分析,在导入身份证号码时往往会导入隐藏字符,看着是18位,实质是19位身份证号码,导致对比时数据出错,如图:


分析身份证号码中只能出现数字与字符,因此简单的办法是过滤掉其他字符即可,在网上找了一下,有现成的Sql函数可以使用,如下:
--删除非字符
--
'%[^a-z]%' CREATE Function [dbo].[RemoveNonAlphaCharacters](@Temp VarChar(1000)) Returns VarChar(1000) AS Begin While PatIndex('%[^a-z]%', @Temp) > 0 Set @Temp = Stuff(@Temp, PatIndex('%[^a-z]%', @Temp), 1, '') Return @TEmp End
--删除非数字、字符 -- '%[^a-z0-9]%' CREATE Function [dbo].[RemoveNonAlphaNumericCharacters](@Temp VarChar(1000)) Returns VarChar(1000) AS Begin While PatIndex('%[^a-z0-9]%', @Temp) > 0 Set @Temp = Stuff(@Temp, PatIndex('%[^a-z0-9]%', @Temp), 1, '') Return @Temp End
--删除非数字 -- '%[^0-9]%' CREATE Function [dbo].[RemoveNonNumericCharacters](@Temp VarChar(1000)) Returns VarChar(1000) AS Begin While PatIndex('%[^0-9]%', @Temp) > 0 Set @Temp = Stuff(@Temp, PatIndex('%[^0-9]%', @Temp), 1, '') Return @TEmp End


用法:
UPDATE dddddd SET [5] = dbo.RemoveNonAlphaNumericCharacters([5]) WHERE LEN([5]) = 19--dbo.必须输入


转至:https://www.cnblogs.com/litsword/archive/2013/04/04/2998954.html
这篇效果相同:https://www.cnblogs.com/zhaowei303/articles/5462093.html

 

posted @ 2018-12-19 14:22  罗浩  阅读(3306)  评论(0)    收藏  举报