我可以使用什么声明代替以下查询?
Select *
From Customer.dbo.Human
Where LTrim(RTrim(Mobile)) In ('0', '00', '000', '0000', ....)
答案 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或空字符串。