hive中 不等號 的用法

背景:

A表中uuid 字段存在三種情況。第一種爲空的情況(即爲null),第二種爲字符串‘null’,第三種正常情況。
要求:給出規則,過濾出是爲字符串’null’的異常數據量?
解決思路:
第一種:字符串null有一定的長度,長度爲4,正常情況都是長度在20以上
規則:length(uuid) <> 4;
結果:過濾出來的數據除了有字符串’null’的情況,其中還包含了爲空的情況。
what???????????
查閱資料:
– 原來’<>’(不等號)會自動過濾掉爲空(Null)的情況,所以爲空的情況也被我們當作異常數據處理了!!

解決:我們把爲空的情況包含進來,問題是不是就解決了?
規則:length(uuid) <> 4 or uuid is null
結果:very good!!! 結果證明我們是正確的!

原因:(那到底是什麼原因造成的呢?)

我們來對每種情況都來分析一下:

第一種:length(null) <> 4
返回值: NULL

第二種:length('null') <> 4
返回值:false

第三種:length('i love you') <> 4
返回值:true

現在就很清楚了吧,只有返回值爲truel了,纔是我們所謂的正確的結果,那麼返回值爲NULL或者false都會被當作是異常數據,所以我們再通過or uuid is null將爲null的數據重新從異常數據中剔除出去,得到的結果(異常數據)就是我們目標得到的數據(數據爲字符串’null’)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章