使用子选择并比较两个varchar列时不匹配

时间:2013-01-31 07:48:15

标签: sql

我遇到了一些奇怪的事情,我无法理解为什么这不起作用;即使它应该很简单。

假设我有一个查询选择这样的临时表:

SELECT customer_no
INTO #temp 
FROM #old_temp

从另一个临时选择的一个临时工并且有效。 Customer_no是varchar(6)。我只有一个值用于测试目的:'123456'

然后代码试图这样做:

SELECT customer_no
FROM #temp
WHERE customer_no NOT IN
 (SELECT cust_number from AnotherCustomerTable)

在AnotherCustomerTable中,“123456”确实不存在。 customer_no也是varchar(6)。我尝试过什么,结果是空的,而我应该在结果集中得到'123456'。

任何经历过这种情况并知道它可能是什么的人?我试过修剪功能,但没有帮助。

2 个答案:

答案 0 :(得分:0)

您的查询没有任何问题。假设customer_no'123456'存在于#old_temp中,则它将被插入到#temp中。假设在AnotherCustomerTable中不存在cust_number'123456',那么它应该返回结果。

这是一个SQL Fiddle演示。我的猜测是你的数据不正确。

祝你好运。

答案 1 :(得分:0)

解决!

愚蠢的我没有考虑子选择中的NULL。补充一点:

SELECT cust_number from AnotherCustomerTable
WHERE cust_number IS NOT NULL