SQL 检查文本是否包含单词

SQL Check if a text contains a word

我有一条短信,

'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')

有一些方法可以做到这一点,看来你想要找到一个词而不是一个词的一部分,所以你可以使用 like operator

轻松完成

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

  1. 'space'字数
  2. WORD'space'
  3. 'space'WORD'space'

SELECT * FROM TABLE WHERE Field like ' an' OR Field like 'an ' OR Field like ' an '

希望对您有所帮助

它在 MS SQL 服务器中通过 CHARINDEX 函数完美完成(它是 MS SQL 的内部功能):

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

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

这是一种方法。

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

Luka提到的三种情况:

  1. Space 字前
  2. Space 字后
  3. Space字前后

为此,您将编写如下查询来搜索整个单词,并用前导和尾随 space 填充要搜索的表达式以捕获 [=24= 处的单词] 的表达式:

Note: I've used a contrived example to make this portable and demonstrable.

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