SQL检查文本是否包含单词

时间:2015-04-01 08:57:13

标签: sql string sql-server-2005

我有一个文字,

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

我想检查单词an是否在我的字符串中。

如何检查文本中是否包含SQL中的特定单词?我无法添加全文目录。其他我可以

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

4 个答案:

答案 0 :(得分:8)

这是一种方法。

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 %'
;

答案 1 :(得分:2)

有一些方法可以做到这一点,似乎你想要找到一个单词而不是单词的一部分,所以你可以用{{1 }}

你可以有3个案例找到一个单词

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

    SELECT * FROM TABLE WHERE字段如'an'OR字段,如'an'OR   字段就像'an'

    希望有所帮助

答案 2 :(得分:0)

CHARINDEX函数在MS SQL Server中完成了它(它是MS SQL的内部函数):

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

之前在another post中显示了该解决方案。

答案 3 :(得分:0)

您会遇到Luka提到的三种情况:

  1. 单词前的空格
  2. 单词后的空格
  3. 单词前后的空格

要完成此操作,您将编写类似于以下的查询,该查询将搜索整个单词,并填充表达式以在开头和结尾处进行搜索,以在表达式的开头/结尾捕获单词:

  

注意:我使用了一个人为设计的示例来使此示例易于携带和演示。

select
  t.txt
from (
  select
    'this is an awesome test of awesomeness man' as txt
) t
where
  charindex(' an ', ' ' + t.txt + ' ') > 0;