忽略null和空格的SQL Where条件


insert into Dim_Business_Line(Business_Line_Code,Business_Line_Name) 
select max(tbl.Business_Line_Code) as Business_Line_Code, tbl.Business_Line_Name 
from temp_Business_Line tbl 
LEFT JOIN Dim_Business_Line bl ON  tbl.Business_Line_Name = bl.Business_Line_Name  
where IFNULL(tbl.Business_Line_Name, '')<>''  
AND bl.Business_Line_Name IS NULL  
Group By tbl.Business_Line_Name; 

在此代码中,在条件IFNULL(tbl.Business_Line_Name,''(<gt;''是我被卡住的地方,for this my trainer said it is a condition that ignores null and blank spaces .Can anyone explain How?

如果tbl.Business_Line_NameNULL,则IFNULL(tbl.Business_Line_Name, '')返回''字符串。<>运算符正在排除所有''字符串。

更多bl.Business_Line_Name为NULL,并且仅对该值仍有JOIN,这有点令人惊讶。

当tbl。Business_Line_Name为NULL或不为NULL,则加入不同。LEFT联接将使用一个子集。

使用IFNULL会使读取和整个逻辑变得非常困难。

LEFT JOIN Dim_Business_Line bl ON  tbl.Business_Line_Name = bl.Business_Line_Name  
WHERE IFNULL(tbl.Business_Line_Name, '') <> ''  
AND bl.Business_Line_Name IS NULL  

我猜不出你在问什么。这实际上意味着:

LEFT JOIN Dim_Business_Line bl ON  tbl.Business_Line_Name = bl.Business_Line_Name  
WHERE tbl.Business_Line_Name IS NOT NULL
AND tbl.Business_Line_Name <> ''  
AND bl.Business_Line_Name IS NULL  

但这不会产生任何记录。可能是OUTER联接或or。不知道。

关于空间,可以使用TRIM函数。

最新更新