【发布时间】:2015-02-21 03:42:04
【问题描述】:
以下表格有记录“FF Studios”,但是当我运行查询时,我没有看到任何记录。
Select *
from ( Select Name,
Ref_name,
Final_Name = CASE
WHEN _Similarity >=0.80
and _Match ='Solid Matched'
and Owner IS NOT NULL
THEN Ref_Name
ELSE Name
END,
Address,
City,
Province,
[Postal Code],
Country,
Phone,
Fax,
Owner
_Similarity,
_Match
from Customer_Stage3
) as a
WHERE a.Final_Name LIKE ('%FF St%')
and ( a.Final_Name IN ( Select Customer_Clean
from SFCustomerMerge
Group BY Customer_Clean
HAVING COUNT(Customer_Clean) > 1
)
)
order by a._Similarity
在这种情况下,记录存在于 SFCustomerMerge 表和客户阶段 3 中,但是当我添加第一个 Where 子句时它消失了,我检查了查询
Select Customer_Clean
from SFCustomerMerge
Group BY Customer_Clean
HAVING COUNT(Customer_Clean) > 1
记录也出现在那里。
我错过了什么?我也知道这条记录的相似度是 0.98,匹配是实心匹配,所有者不是 NULL。
【问题讨论】:
-
可能所有者不是
null而是一个空字符串?试试IsNull(owner, '') != ''。或者a.Final_Name和Customer_Clean的某种区分大小写的问题? -
我也仔细检查过。如果我将 AND 更改为 OR,它会起作用并且我会看到结果。所以这让我认为内部查询 Select Customer_Clean... 有问题,但我也确实在那里看到了结果。
-
或者名称不完全一样。例如,名称中可能包含非标准字符。可以使用
ASCII()查看字符的ascii值。 -
它们是一样的。 where 子句有问题吗?