Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何匹配';0'';00'';000'';0000'。。。TSQL中的模式?_Sql Server_Tsql_Sql Like - Fatal编程技术网

Sql server 如何匹配';0'';00'';000'';0000'。。。TSQL中的模式?

Sql server 如何匹配';0'';00'';000'';0000'。。。TSQL中的模式?,sql-server,tsql,sql-like,Sql Server,Tsql,Sql Like,我可以用什么语句代替下面的查询 Select * From Customer.dbo.Human Where LTrim(RTrim(Mobile)) In ('0', '00', '000', '0000', ....) 这里有一些技巧。单个“0”恰好包含在所有其他案例中,因此它可以工作,因为“0”包含在“000”中 强调-这是一个糟糕的模式。它将错误地识别任何包含零的字符串。如果搜索值不是有效的主键或类型化属性标识符,则任何CharIndex搜索都是

我可以用什么语句代替下面的查询

Select  *
        From   Customer.dbo.Human
        Where  LTrim(RTrim(Mobile)) In ('0', '00', '000', '0000', ....)
这里有一些技巧。单个“0”恰好包含在所有其他案例中,因此它可以工作,因为“0”包含在“000”中

强调-这是一个糟糕的模式。它将错误地识别任何包含零的字符串。如果搜索值不是有效的主键或类型化属性标识符,则任何CharIndex搜索都是危险的模式。i、 e如果您不能在('SpecificValue1'、'SpecificValue2')中使用,请退回重新评估


我更喜欢的解决方案是不要插入未通过验证的值,在清理例程中插入或更新时,所有看起来像零的字符串都将转换为null或空字符串。

假设您希望匹配完全由零和空格组成且至少包含一个零的手机号码

那么下面就是一种方法

WHERE Mobile LIKE '%0%' AND Mobile NOT LIKE '%[^ 0]%'

尽管OP接受了这一点,但我怀疑它是否会成为我们所需要的。该模式似乎是“完全由零组成”,而不仅仅是“包含一个零”,这些也将匹配空字符串,不是吗?@Twinkles-是的。现在。我怀疑这是我们想要的功能。将进行编辑。为什么不
其中Len(替换(移动,'0','')=0
WHERE Mobile LIKE '%0%' AND Mobile NOT LIKE '%[^ 0]%'
Where Len(Mobile) - Len(Replace(Mobile, '0', '')) = Len(Mobile)