繁体   English   中英

SQL LIKE没有得到正确的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM