2015-04-01 60 views
-1

我有一個文本,SQL檢查文本所包含的單詞

'Me and you against the world' // false 
'Can i have an email address' // true 
'This is an' // true 
'an' //true 

我想查這個詞an是否是我的字符串中。

如何檢查文本是否包含SQL中的特定單詞?我無法添加全文目錄。 Otherwies我可以

SELECT * FROM TABLE WHERE CONTAINS(Text, 'an') 
+0

其中相同的列「%的%」 – jarlh 2015-04-01 08:58:07

+0

@jarlh - 我添加不適合%的% – fubo 2015-04-01 09:35:04

+1

當然...其中'一個例子||列|| ''就像'%an%'。 (其中||是ANSI SQL concat,SQL Server可能有一個concat函數?) – jarlh 2015-04-01 09:49:41

回答

5

以下是一種方法。

DECLARE @table_name table (
    column_name varchar(50) 
); 

INSERT INTO @table_name (column_name) 
    VALUES ('Me and you against the world') 
     , ('Can i have an email address') 
     , ('This is an') 
; 

SELECT column_name 
FROM @table_name 
WHERE ' ' + column_name + ' ' LIKE '% an %' 
; 
+0

就是這樣!謝謝 – fubo 2015-04-01 11:17:34

+0

你能解釋一下爲什麼在'column_name'之前和之後加空格嗎? – 2017-10-25 10:56:22

3

有一些方法來做到這一點,似乎想要找到一個詞一言不和的一部分,這樣你就可以輕鬆地與like operator

你做可以有3個案例中找到的單詞

  1. 'space'WORD
  2. WORD'space'
  3. 'space'WORD'space'

SELECT * FROM表名where字段,如 '一' 或現場像 '一個' OR 場像 '一個'

希望它可以幫助

+0

只需在LIKE比較中丟失通配符 - 除此之外 - 很好的解決方案! – gvee 2015-04-01 10:53:56

+0

@gvee如果在Luka Milani的答案中有%-wildcards,那麼如果'an'是唯一的單詞 - 因爲文本中沒有空格 – fubo 2015-04-01 11:08:46

+0

@fubo,'%'通配符匹配時它不匹配*任何字符串*零個或多個*字符。「 (https://msdn.microsoft.com/en-us/library/ms179859.aspx) – gvee 2015-04-01 11:09:46

0

它是在MS SQL服務器由CHARINDEX功能完全可以做到的(這是內部的MS SQL):

if CHARINDEX('an ',@mainString) > 0 
begin 
    --do something 
end 

該解決方案之前已在another post中顯示。

+0

錯誤的答案 - 檢查預期的結果。 – Arvo 2015-04-01 10:41:21

+0

@阿沃爲什麼錯了答案?他想要一個函數來檢查一個字符/字符串是否在另一個字符串中,CHARINDEX不這樣做?如果在字符串中找到它會返回一些位置,所以它包含在內...... – 2015-04-01 10:53:10

+0

@JavierSalazar「這個例子包含單詞**和** d不是搜索詞本身」 – gvee 2015-04-01 10:55:51

相關問題