通过 Sql 服务器中的正则表达式查找列仅具有特殊数字(如零)的记录



我在具有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

但是,当您在该列中有字母时,它会导致错误。

最新更新