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