2011-01-06 81 views
0

我有兩個表的用戶&人SQL LIKE沒有得到正確的結果

用戶 - 用戶名,名字,姓氏,PERSONID

- PERSONID,1,名稱

ForExample:名字:Tom姓:Jerry姓名1: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+'%' 

但是,這並沒有返回我正確的記錄集。

+1

你能給我們一個你說錯的記錄的例子嗎? – Lamak 2011-01-06 18:17:51

+0

如果你看看我提供的例子,基本上我在尋找名稱1是湯姆傑裏而不是湯姆湯姆 – Pinu 2011-01-06 18:35:44

回答

0

我相信你在最後的邏輯是錯誤的。

您想要查找所有「用戶表姓氏未顯示在人員表的名稱列中的數據庫中的所有記錄」。

你現在的邏輯是「哪裏姓不像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 + '%' 
0

它返回什麼?

嘗試使用Trim()您正在搜索的字符串,也許有空白,導致它找不到匹配?

0

我認爲這應該工作:

SELECT * 
FROM USER u 
WHERE u.LastName NOT IN (SELECT p.Name1 from Person p) 
0

嘗試這樣的事情....

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+'%'