2009-08-07 278 views
50

在T-SQL中,如何检查字符串是否不包含其他字符串?检查字符串是否不包含其他字符串

我有一个nvarchar这可能是“橘子苹果”。

我想做一个更新,例如,一个柱子不包含包含“苹果”。

这怎么办?

+1

请对问题标题更准确。 '“包含另一个字符串”!=“不包含另一个字符串” – lordcheeto 2012-10-23 19:35:31

+0

-1“,表示标题不准确。 – 2012-11-27 15:39:04

+1

我改了标题。迟到比晚起更好:) – Dofs 2012-12-08 09:47:58

回答

75
WHERE NOT (someColumn LIKE '%Apples%') 
+1

为什么我没有想到这一点,我正在寻找更先进的东西:) – Dofs 2009-08-07 19:06:09

+0

使用单引号代替双:'%Apples%'。我试图编辑帖子,但SO需要修改为六个或更多字符。 – DeveloperDan 2011-08-17 13:33:16

+0

@DeveloperDan - 谢谢。固定。 – 2011-08-17 13:41:01

24

或者,你可以这样做:

WHERE CHARINDEX(N'Apples', someColumn) = 0 

不知道哪一个效果更好 - 你总得测试一下吧! :-)

马克

UPDATE:性能似乎是相当多的与其它解决方案相媲美(WHERE someColumn NOT LIKE“%苹果%”) - 因此它实际上只是一个个人喜好的问题。你被假定

+0

对我而言,性能不是一个大问题。 – Dofs 2009-08-07 20:19:36

+2

+1:如果要匹配的文本是动态的而不是静态的字符串,比如'Apples',那么这种方法比较好,因为你不需要担心诸如'%','_'这样的通配符,它​​会由LIKE运算符匹配。 – Joe 2013-05-20 09:23:32

+0

@Joe如果你想对此迂腐,那么这个也不适用于所有情况。 CHARINDEX不区分大小写。所以如果你在苹果领域寻找苹果,你会得到很多。我知道它已经过了几年,但仍然如此。两个答案都是有效的,具体取决于主题,没有人回答涵盖所有的基础。从你接受的答案-1只是似乎有点......是不是正确的词? – DDuffy 2016-12-19 13:33:13

10

使用此为您的WHERE条件

WHERE CHARINDEX('Apples', column) = 0 
7

的答案静态文本来比较。如果你想进行比较的另一列(比方说,你要加入两个表,并希望找到那些来自一个表中的列是从其他表列的一部分),你可以做到这一点

WHERE NOT (someColumn LIKE '%' || someOtherColumn || '%') 
+1

+1,你也可以使用NOT LIKE语法。 – Dunc 2012-12-13 11:50:56

+2

如果someOtherColumn包含通配符(如'%','_'),则不起作用。 – Joe 2013-05-20 09:21:00

相关问题