我在具有Nvarchar
列的SQL Server表中有一些记录。
此列值包含:
1-字符和数字的组合,例如:'AA3136381'
2-数字,如:02240773
但是有一些记录显示列值仅包含 0。
列
0
00
00000000
在此列中,数字零可以重复多次。
我想在 SQL Server 查询中通过正则表达式查找这些记录。
我的意思是查询结果集必须是:
结果
0
00
00000000
不02240773。
where col not like '%[^0]%'
基本上,寻找任何不是零的东西,然后否定结果
不需要正则表达式(顺便说一句,它们在SQL Server中非常有限(。你只需要这样的where
子句:
where len(replace(MyColumn, '0', '')) = 0 and len(MyColumn) > 0
这意味着选择所有记录,其中MyColumn
仅为零。
您也可以尝试转换为int
或更好:bigint
并与 0 进行比较:
WHERE CAST (MyColumn AS BIGINT) = 0
但是,当您在该列中有字母时,它会导致错误。