此查询返回以下内容:
select *
from dbo.persons
where LastName like '%Dan%';
结果:
如何只选择带有LastName = "Dan"
的第一行而不选择“ Dant”或“ Dan12”?
我正在使用以下查询:
select *
from dbo.persons
where LastName like '%[^a-z]Dan[^a-z]%'
or LastName like 'Dan[^a-z]%'
or LastName like '%[^a-z]Dan'
返回以下内容:
LastName = Dan12
LastName = pine and Dan and apple
我只想要这些结果:
LastName = Dan
LastName = pine and Dan and apple
我尝试了以下查询,但未返回任何内容:
select *
from dbo.persons
where LastName like '%[^a-z][^0-9]Dan[^a-z][^0-9]%'
or LastName like 'Dan[^a-z][^0-9]%'
or LastName like '%[^a-z][^0-9]Dan'
答案 0 :(得分:1)
简单
select * from dbo.persons where LastName ='Dan';
答案 1 :(得分:1)
下面两个语句都可以做您想要的事情:
select * from dbo.persons where LastName like 'Dan';
或:
select * from dbo.persons where LastName = 'Dan';
答案 2 :(得分:0)
我猜你不知道哪个是第一个,所以这行不通:
account baz@xmpp.foo.bar
相反,您选择按字母顺序排列的第一个顺序
where LastName = 'Dan'
答案 3 :(得分:0)
我使用了以下似乎有效的查询:
select * from dbo.persons where LastName like '%[^a-z]Dan[^a-z]%' OR
LastName like 'Dan[^a-z0-9]%' OR
LastName like '%[^a-z]Dan' OR
LastName like 'Dan';
这些是预期返回的行。
答案 4 :(得分:-1)
不是使用LIKE
来通过使用通配符%
来检查字符或一组字符的任何出现,而是使用=
来获得所需的精确匹配。
如果在开头或结尾处都存在尾随空格,则将无法获得完全匹配的内容,因此请使用LTRIM()或RTRIM()来消除空格。
SELECT * FROM dbo.persons WHERE LastName = LTRIM(' Dan')
OR
SELECT * FROM dbo.persons WHERE LastName = RTRIM('Dan ')