如何匹配' 0',' 00',' 000',' 0000' ... TSQL中的模式?

时间:2014-10-30 05:55:07

标签: sql-server tsql sql-like

我可以使用什么声明代替以下查询?

Select  *
        From   Customer.dbo.Human
        Where  LTrim(RTrim(Mobile)) In ('0', '00', '000', '0000', ....)

3 个答案:

答案 0 :(得分:1)

假设您想要匹配完全由零和空格组成且包含至少一个零的移动号码。

然后以下是一种方式..

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

答案 1 :(得分:1)

Where Len(Mobile) - Len(Replace(Mobile, '0', '')) = Len(Mobile)

答案 2 :(得分:-1)

select *
from Customer.dbo.Human
where CHARINDEX(Mobile, '0') > 0

这里有一些技巧。单身' 0'碰巧包含在你的所有其他情况中,因此它起作用,因为' 0' 0包含在''

EMPHASIS - 这是一种糟糕的模式。它会错误地识别任何一个零的字符串。搜索值实际上不是主键或类型属性标识符的任何CharIndex搜索都是危险模式。即如果您不能使用IN(' SpecificValue1',' SpecificValue2'),请退回重新评估。

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