是否可以使用'NOT LIKE'%%'条件连接两个表?

时间:2011-11-28 04:25:43

标签: sql tsql

我需要一个查询,将一个表中的字符串列表与另一个表中的字符串列表进行比较。

伪代码可能是:

for each word in slang
 if not word.contains(animalName) {
  print animalName
 }
next slang

它不一定要快,不适合生产。我正在尝试调试某些东西,查询的结果就是我需要使用的东西。

谢谢。

4 个答案:

答案 0 :(得分:4)

所以听起来你有一个表Slang和一个表Animals,你想要Slang不包含Animal的所有组合。这非常简单

SELECT s.Word, a.AnimalName
FROM Slang s INNER JOIN Animal a 
ON s.Word NOT LIKE '%' + a.AnimalName + '%'

如果你只想要那些不像任何动物名字的单词,那么你需要选择那些 然后反转的那些(但那么你如何确定哪个'单词'与哪个'动物名称'相关?)

SELECT Word FROM Slang WHERE Word NOT IN 
(SELECT s.Word
FROM Slang s INNER JOIN Animal a 
ON s.Word LIKE '%' + a.AnimalName + '%') words

答案 1 :(得分:3)

所有不包含动物名称的俚语:

SELECT word 
FROM slang 
WHERE NOT EXISTS (
  SELECT * 
  FROM animals 
  WHERE word LIKE '%'+ animalName + '%')

答案 2 :(得分:0)

也许您可以将数据拉入每个表的.Net集合中,然后使用LNIQ来比较它们。

答案 3 :(得分:0)

仍然试图了解你在寻找什么,但是如何:

SELECT term AS word FROM slang
EXCEPT
SELECT animalName AS word FROM allAnimalNames