使用特定单词搜索表列

Amj*_*doV 4 sql-server search

假设我有一个包含两列的表格:

ID, FullName
Run Code Online (Sandbox Code Playgroud)

我在其中有以下记录:

John Bob Smith
John Bobby Smith
Run Code Online (Sandbox Code Playgroud)

我的问题是:

我想只返回包含匹配单词"Bob"的行,并且我不想返回任何包含类似"Bobby"字样的行

当我搜索时使用:

Select * 
From Table1 
Where FullName like '%bob%'
Run Code Online (Sandbox Code Playgroud)

我得到了两行错了.

Select * 
From Table1 
Where FullName = 'Bob'
Run Code Online (Sandbox Code Playgroud)

这根本不返回任何行.

Select * 
From Table1 
Where FullName like 'Bob'
Run Code Online (Sandbox Code Playgroud)

这也不会返回任何行.

我尝试使用不同的通配符,但没有任何作用,我也试过了CHARINDEX,PATINDEX但他们也没有返回所需的结果.

有什么建议?

谢谢.

ype*_*eᵀᴹ 7

SELECT * 
FROM Table1 
WHERE FullName LIKE '%Bob%'
  AND FullName NOT LIKE '%Bobby%'
Run Code Online (Sandbox Code Playgroud)

或者,也许你的意思,以避免任何BobbyBobbanBobyBobbie,等等:

SELECT * 
FROM Table1 
WHERE FullName = 'Bob'             --- just Bob
   OR FullName LIKE 'Bob %'        --- starts with Bob
   OR FullName LIKE '% Bob'        --- ends with Bob
   OR FullName LIKE '% Bob %'      --- middle name Bob
Run Code Online (Sandbox Code Playgroud)

这将会遗漏带'John Bob-George Smith''John Bob. Smith'等的行.如果你想要这样的扩展功能,那么按照Albin的建议拆分字符串的SQL函数是一种更好的方法.