在我們平常的數(shù)據(jù)開發(fā)工作中,由于數(shù)據(jù)質(zhì)量的問題或者是在數(shù)據(jù)關(guān)聯(lián)的過程中,可能會(huì)出現(xiàn)字段內(nèi)容為null值的情況,如果該字段需要展示或者是參與計(jì)算的話,怎么處理這些內(nèi)容就很重要了,以下是我用到的SQL中對(duì)null值的處理,與大家分享。
一、hive數(shù)據(jù)庫
hive里面對(duì)null值的處理用到的函數(shù)是COALESCE()和nvl()
1,COALESCE()
(1)函數(shù)格式與釋義
COALESCE()函數(shù)
語法格式:COALESCE(expression_1,expression_2,expression_3…expression_n)
釋義:依次參考各參數(shù)表達(dá)式,遇到非null值即停止并返回該值。如果所有的表達(dá)式都是空值,最終將返回一個(gè)空值。
(2)COALESCE()實(shí)戰(zhàn)演練
將null值置為0
SELECT * FROM test.test_data ;
SELECT id,name,sex,COALESCE(sex,'0')
FROM test.test_data;
查詢幾個(gè)字段里面第一個(gè)非空的內(nèi)容
SELECT *,COALESCE(sex,name,age)
FROM test.test_data
釋義:
id為1,2,3的數(shù)據(jù),sex不為空,所以查詢出來是sex字段的值,id為4的數(shù)據(jù),sex為空,name字段不為空,所以查詢出來的是name字段的內(nèi)容。
2,nvl()函數(shù)
(1)函數(shù)格式與釋義
格式:nvl(expression_1,expression_2)
釋義:如果表達(dá)式1的值為空,返回表達(dá)式2的值;如果表達(dá)式1的值不為空,返回表達(dá)式1的值。
注意:表達(dá)式的值可以是數(shù)字型、字符型和日期型。但是表達(dá)式1和表達(dá)式2的數(shù)據(jù)類型必須為同一個(gè)類型。
(2)nvl()函數(shù)實(shí)戰(zhàn)練習(xí)
查詢語句:
SELECT *,nvl(sex,name)
FROM test.test_data
輸出結(jié)果:
釋義:
nvl()函數(shù)是如果表達(dá)式1為空,則返回表達(dá)式2的值,如果表達(dá)式1不為空,則返回表達(dá)式1的值
這里sex字段為表達(dá)式1,name字段為表達(dá)式2,結(jié)果則如圖所示。
二、MySQL數(shù)據(jù)庫
1,函數(shù)格式與釋義
IFNULL() 函數(shù)
語法格式:IFNULL(表達(dá)式1,表達(dá)式2);
釋義:如果 表達(dá)式1 不為NULL,則IFNULL函數(shù)返回 表達(dá)式1 ; 否則返回 表達(dá)式2 的結(jié)果。
注意:這里的表達(dá)式 兩個(gè)參數(shù)可以是文字值或者表達(dá)式
2,實(shí)戰(zhàn)演練
(1)當(dāng)?shù)谝粋€(gè)表達(dá)式不為空,返回第一個(gè)表達(dá)式內(nèi)容
SELECT ifnull('xiaoming','xiaohua');
(2)當(dāng)?shù)谝粋€(gè)表達(dá)式為空,返回第二個(gè)表達(dá)式內(nèi)容
SELECT IFNULL(NULL,'xiaohua') ;
文章來源:http://www.zghlxwxcb.cn/news/detail-486400.html
(3)字段內(nèi)容null值置為0
SELECT IFNULL(NULL,0) ;
如果想要判斷整個(gè)字段的話,就將第一個(gè)表達(dá)式的位置換為需要置為0的字段就可以了。文章來源地址http://www.zghlxwxcb.cn/news/detail-486400.html
到了這里,關(guān)于SQL中對(duì)數(shù)據(jù)字段null值的處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!