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_Name
是NULL
,则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函数。