SQL匹配精确字

SQL匹配精确字,sql,sql-server,Sql,Sql Server,我知道此查询返回所有包含白色的行: SELECT COUNT(*) FROM MyTable WHERE Title like '%white%' 但我想得到像白玫瑰那样的排,而不是像白玫瑰那样的排。如何编辑该查询以仅获取包含白色的单个单词?提前感谢。假设单词之间用空格分隔,您可以执行以下操作: WHERE ' ' + Title + ' ' like '% white %' 或者,您可能需要全文搜索功能。假设单词之间用空格分隔,您可以执行以下操作: WHERE ' ' + Title +

我知道此查询返回所有包含白色的行:

SELECT COUNT(*) FROM MyTable WHERE Title like '%white%'

但我想得到像白玫瑰那样的排,而不是像白玫瑰那样的排。如何编辑该查询以仅获取包含白色的单个单词?提前感谢。

假设单词之间用空格分隔,您可以执行以下操作:

WHERE ' ' + Title + ' ' like '% white %'

或者,您可能需要全文搜索功能。

假设单词之间用空格分隔,您可以执行以下操作:

WHERE ' ' + Title + ' ' like '% white %'

或者,您可能需要全文搜索功能。

通过在两侧查找带有空格字符的word来尝试此功能

SELECT COUNT(*) FROM MyTable WHERE ' ' + Title + ' ' like '% white %'

在标题的两边加空格是为了防止单词出现在字符串的开头或结尾。

可以通过在单词的两边加空格来查找

SELECT COUNT(*) FROM MyTable WHERE ' ' + Title + ' ' like '% white %'

在标题的两边加空格是为了防止单词出现在字符串的开头或结尾。

我想你要找的是:

SELECT COUNT(*)
FROM MyTable
WHERE Title like '% white %'
  OR Title like '% white'
  OR Title like 'white %';

我想你要找的是:

SELECT COUNT(*)
FROM MyTable
WHERE Title like '% white %'
  OR Title like '% white'
  OR Title like 'white %';

其他答案没有考虑标点符号

DECLARE @Table TABLE (
    Title NVARCHAR(4000)
)

INSERT INTO @Table (Title) SELECT 'White Christmas was a song.'
INSERT INTO @Table (Title) SELECT 'I''m dreaming of a white Christmas.'
INSERT INTO @Table (Title) SELECT 'The snow was white.'
INSERT INTO @Table (Title) SELECT 'Whitewolves are dangerous.'
INSERT INTO @Table (Title) SELECT 'Snowwhite was a female.'


SELECT *
FROM (
    SELECT Title FROM @Table
    WHERE Title LIKE '%white%'
) match
WHERE Title NOT LIKE '%white[a-z]%'
AND Title NOT LIKE '%[a-z]white%'

其他答案没有考虑标点符号

DECLARE @Table TABLE (
    Title NVARCHAR(4000)
)

INSERT INTO @Table (Title) SELECT 'White Christmas was a song.'
INSERT INTO @Table (Title) SELECT 'I''m dreaming of a white Christmas.'
INSERT INTO @Table (Title) SELECT 'The snow was white.'
INSERT INTO @Table (Title) SELECT 'Whitewolves are dangerous.'
INSERT INTO @Table (Title) SELECT 'Snowwhite was a female.'


SELECT *
FROM (
    SELECT Title FROM @Table
    WHERE Title LIKE '%white%'
) match
WHERE Title NOT LIKE '%white[a-z]%'
AND Title NOT LIKE '%[a-z]white%'

包括标点符号,正如Ghost指出的:

select title 
from t
where ' '+title+' ' like '%[^a-z]white[^a-z]%'
rextester演示:

返回

+------------------+
|      title       |
+------------------+
| white            |
| white house      |
| something white. |
+------------------+

包括标点符号,正如Ghost指出的:

select title 
from t
where ' '+title+' ' like '%[^a-z]white[^a-z]%'
rextester演示:

返回

+------------------+
|      title       |
+------------------+
| white            |
| white house      |
| something white. |
+------------------+