我需要在SQL Server 2008数据库表的varchar
字段中找到无效的社会安全号码。 (有效的SSN的格式为###-##-####
- 只要数字是“3位破折号2位破折号4位”的数字就没有关系。社会安全号码(SQL Server 2008 R2)的T-SQL正则表达式
我确实有一个工作正则表达式:
SELECT *
FROM mytable
WHERE ssn NOT LIKE '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]'
这确实发现该列中的无效核潜艇,但我知道(好吧 - 我敢肯定)有缩短的是,表明先前的模式可以有办法x迭代
我认为这样会工作:
'[0-9]{3}-[0-9]{2}-[0-9]{4}'
但事实并非如此。
在选择中是否存在比上面那个更短的正则表达式?或者也许有,但T-SQL/SQL Server 2008不支持它!?
TSQL没有原生Regex支持。它支持你使用的'LIKE',但这是一种非常简单的语言 - 根本不是真正的正则表达式。一个更好的计划可能是只存储9位数字(为此创建约束非常简单),只需在显示* SSN时插入破折号 - 除非实际需要支持存储无效数据。 –