[英]SQL LIKE not getting right results
我有两个表Users&Person
用户 -用户名,名,姓,人名
Person -personID,Name1,Name2
例如:FirstName:Tom LastName:Jerry Name1:TomTom
请参见合适的示例,在Name1列的任何位置都找不到姓氏。
我需要在用户表的name1列中未显示用户表姓氏的数据库中提取所有记录。
SELECT Users.UserName,Users.FirstName,Users.LastName,
Users.PersonID,Person.Name1,Person.Name2
FROM Users
JOIN Person
ON Users.PersonID = Person.PersonID
WHERE Users.LastName NOT LIKE '%'+Person.Name1+'%'
但这并没有给我正确的记录。
返回的是什么?
尝试在要搜索的字符串上使用Trim(),也许存在空格导致其找不到匹配项?
我认为这应该工作:
SELECT *
FROM USER u
WHERE u.LastName NOT IN (SELECT p.Name1 from Person p)
尝试这样的事情。
SELECT Users.UserName,Users.FirstName,Users.LastName,Users.PersonID,Person.Name1,Person.Name2
FROM Users, Person
WHERE Users.PersonID = Person.PersonID
AND Users.LastName NOT LIKE '%'+Person.Name1+'%'
我相信您的逻辑最后是错误的。
您想找到所有“数据库中所有未在用户表的name1列中显示用户表姓氏的记录”。
您目前的逻辑是“姓氏不像name1。”
您想要的是“其中name1不包含姓氏的地方”。
SELECT Users.UserName,
Users.FirstName,
Users.LastName,
Users.PersonID,
Person.Name1,
Person.Name2
FROM Users
JOIN Person
ON Users.PersonID = Person.PersonID
WHERE Users.Name1 NOT LIKE LastName NOT LIKE '%' + LastName + '%'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.