2014-10-30 166 views

回答

1

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

那么下面是一个办法..

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

这些也会匹配空字符串,对吗? – Twinkles 2014-10-30 08:46:09

+0

@Twinkles - 是的。在这一刻。我怀疑这是所需的功能。将编辑。 – 2014-10-30 08:48:28

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

有一些技巧怎么回事。单个'0'碰巧包含在所有其他案例中,因此它的工作原理是'0'包含在'000'内

重点 - 这是一种糟糕的模式。它会错误地识别任何带零的字符串。任何CharIndex搜索搜索值无效的主键或类型属性标识符是一种危险模式。即如果你不能使用IN('SpecificValue1','SpecificValue2'),那么退一步重新评估。

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

+2

即使OP接受这一点,我怀疑它会变成是需要什么。模式似乎是“完全由零组成”,而不仅仅是“包含零” – 2014-10-30 08:33:07

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

为什么不能Len哪里(Replace(Mobile,'0',''))= 0'? – thepirat000 2014-12-07 03:07:50