2013-12-20 111 views
0

,我需要选择基于A_Class场从tbl_B从tbl_A记录如下MS SQL coonditional检查空值

SELECT * FROM tbl_A 
WHERE A_Class IN (SELECT A_Class FROM tbl_B) 

然而,A_Class威力包含NULL值

我需要在另一个条件添加

如果A_Class包含NULL值,然后

WHERE A_Class IN (SELECT A_Class FROM tbl_B) OR A_Class IS NULL 

如果没有空值,检查NULL的条件需要忽略/删除

所以我的问题是,是否有可能使它成为一个单一的查询?

回答

1

如果在A_Class不为空值(我的意思是“”)你可以试试这个代码:

SELECT * FROM #tbl_A 
WHERE exists 
    (SELECT * FROM #tbl_B 
    where isnull(#tbl_A.A_Class,'')=isnull(#tbl_B.A_Class,'')) 

如果存在空白值,您甚至可以使用:isnull(#tbl_A.A_Class,'NULL')=isnull(#tbl_B.A_Class,'NULL')并键入短语'NULL'。

+0

这样做的窍门!谢谢! – My2ndLovE

0

如果你想显示所有的记录,而不空值: SELECT a.* FROM tbl_A a INNER JOIN tbl_B b ON a.A_Class = b.A_Class WHERE a.A_Class IS NOT NULL;

如果你想显示没有从tbl_A是在tbl_B空值和所有的人的所有记录: SELECT a.* FROM tbl_A a LEFT JOIN tbl_B b ON a.A_Class = b.A_Class WHERE a.A_Class IS NOT NULL;

如果你想显示所有未经tbl_B,他们都空值是在tbl_A记录: SELECT a.* FROM tbl_A a RIGHT JOIN tbl_B b ON a.A_Class = b.A_Class WHERE b.A_Class IS NOT NULL;