2009-08-07 337 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

相關問題