假设我有一个包含两列的表格:
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
但他们也没有返回所需的结果.
有什么建议?
谢谢.
SELECT *
FROM Table1
WHERE FullName LIKE '%Bob%'
AND FullName NOT LIKE '%Bobby%'
Run Code Online (Sandbox Code Playgroud)
或者,也许你的意思,以避免任何Bobby
和Bobban
和Boby
和Bobbie
,等等:
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函数是一种更好的方法.
归档时间: |
|
查看次数: |
12546 次 |
最近记录: |