标签:sql-server sql
保持基本:有2个表,一个只是另一个的扩展: Example
由于表2是扩展名,我使用左连接。 一切正常 - 但是,表2中的过滤列会导致问题。
重建示例的代码:
create table Table1
( idUnique int)
create table TableExtension
(
idUnique int,
someInfoID int
)
insert into Table1
Values (1), (2), (3), (4), (5)
insert into TableExtension values (2,2)
select a.idUnique, someInfoID
from Table1 a
left join TableExtension b on a.idUnique=b.idUnique
select a.idUnique, someInfoID
from Table1 a
left join TableExtension b on a.idUnique=b.idUnique
where someInfoID = isnull(null,someInfoID)
select a.idUnique, someInfoID
from Table1 a
left join TableExtension b on a.idUnique=b.idUnique
and someInfoID=isnull(2,someInfoID)
第二个Select-query应选择所有数据,但仅显示Table2中也存在的数据。但是,第三个查询应该只显示第2-2行(当前显示全部)
我知道,对空值的过滤是通过使用' is'来完成的。但它怎么能与" isnull"功能? (因为我将它用于潜在的过滤,所以需要这个功能 - 即
Column=ISNULL(@Filtervariable,Column))
您是否有人知道如何解决此问题?
答案 0 :(得分:2)
NULL不是数据类型,而是数据类型的条件。您可以将其用作数据类型。根据Microsoft文档
要在查询中测试空值,请在中使用IS NULL或IS NOT NULL WHERE子句。
阅读更多内容:Null values