为什么SQL不匹配两个字符串?

时间:2017-08-02 08:53:48

标签: mysql sql sql-server

正如我在标题中所说,我的查询并没有回复所期望的内容,也不符合逻辑...... 情况就是这样:

表A - > id INT,值VARCHAR

表B-> id INT,值VARCHAR

当我运行该查询SELECT value FROM A WHERE value NOT IN (SELECT value FROM B);

我希望该查询返回表B中没有的所有值,但它返回所有值。

我们假设A包含

  1. ' 425415'
  2. ' 698741'
  3. 使用该查询:SELECT value FROM A WHERE value NOT IN ('698741','425415'); 它仍会返回所有值而不会触发NOT IN ...

2 个答案:

答案 0 :(得分:2)

这是因为你在" B"中有一个NULL。表,试试这个:

SELECT A.[value]
FROM A
LEFT JOIN B ON A.[value] = B.[value]
WHERE B.[value] IS NULL;

或者如果你想保留你的代码,只需添加IS NOT NULL:

SELECT [value] 
FROM A 
WHERE [value] NOT IN (SELECT [value] FROM B WHERE [value] IS NOT NULL);

sample image

答案 1 :(得分:1)

总结评论主题的核对清单:

  • 使用别名进行测试。
  • 使用LIKE进行测试。
  • 检查长度。
  • 检查整理。