select a.产品描述,a.产品码,a.录入型号编码, from [##table] a left join (select * from [table] where 录入型号编码 is null) b on isnull(a.产品描述,'')=isnull(b.产品描述,'') where b.产品描述 is null
a、b产品描述都为空时,逻辑表达式 NULL = NULL 的结果既不是 Ture 也不是 False。 所以可空的字段时不能用来直接比较的。 要找同时为空的行应该是 select a.产品描述,a.产品码,a.录入型号编码, from [##table] a, (select * from [table] where 录入型号编码 is null) b WHERE a.产品描述 IS NULL AND b.产品描述 IS NULL 至于什么叫“所有没有匹配上的数据行”,按照你的语句无法理解,请用数据举例。
这个没办法了,拿到的数据只能是这个样子。
比如 字段A=N‘我我我我’ 这样加个前缀N就能让数据库按unicode编码来对比,上面那个语句能不能也为系统指定对比方式呢?
这个查出来应该是所有没有匹配上的数据行,但是按这个结果回到 table原表里面去搜 都能找到……所以说这个结果不准
from [##table] a left join (select * from [table] where 录入型号编码 is null) b
on isnull(a.产品描述,'')=isnull(b.产品描述,'') where b.产品描述 is null
所以可空的字段时不能用来直接比较的。
要找同时为空的行应该是
select a.产品描述,a.产品码,a.录入型号编码,
from [##table] a,
(select * from [table] where 录入型号编码 is null) b
WHERE a.产品描述 IS NULL
AND b.产品描述 IS NULL
至于什么叫“所有没有匹配上的数据行”,按照你的语句无法理解,请用数据举例。