天津網(wǎng)站建設(shè)網(wǎng)絡(luò)公司批量關(guān)鍵詞排名查詢工具
我是因?yàn)橛昧薽erge into語法,然后on條件中判斷的字段是可配置的,這就導(dǎo)致了,有時(shí)候判斷條件多的情況下,判斷的字段會(huì)碰到有null值的情況,如果on兩邊的字段都是null,null和null對(duì)比就會(huì)導(dǎo)致結(jié)果為false,采取的操作就全都是insert了,碰到這種數(shù)據(jù),就永遠(yuǎn)都不會(huì)走到更新邏輯了。
解決方案
使用COALESCE函數(shù):COALESCE函數(shù)用于返回一組表達(dá)式中的第一個(gè)非NULL值,將NULL值替換為其他非NULL值。例如:
MERGE INTO target_table AS T
USING source_table AS S
ON (COALESCE(T.column_name, '') = COALESCE(S.column_name, ''))
WHEN MATCHED THEN-- 更新或插入操作
WHEN NOT MATCHED THEN-- 插入操作
總結(jié)
以上方案是可以用,但是存在一個(gè)問題時(shí),有可能類型會(huì)不匹配,不過測試后發(fā)現(xiàn),基于目前我使用的數(shù)據(jù)庫,采用空字符串可以兼容大部分的類型默認(rèn)值,包括時(shí)間和數(shù)字,所以用COALESCE(T.column_name, ‘’)就好了。