oracle 使用length()函數需要注意的坑!


1.情景展示

  篩選出指定字段字符長度既不等於18也不等於15的數據。   

2.原因分析

  第一步:按字符串度進行分組統計;

  第二步:篩選數據。

  你會發現,只將length=17統計了出來,長度不存在的數據沒有統計出來。

 

3.解決方案

  統計長度為0的數據,統計結果為0;

  因為id_card字段為空的行記錄,調用length()后,返回的結果也是null。

  所以,只能用is null 來實現。

  所以,最終結果為:

--對id_card字段長度既不等於18又不等於15的數據進行統計
SELECT SUM(AAA)
  FROM (SELECT COUNT(1) AAA
          FROM VIRTUAL_CARD
         WHERE LENGTH(ID_CARD) <> 18
           AND LENGTH(ID_CARD) <> 15
        UNION ALL
        SELECT COUNT(1) AAA
          FROM VIRTUAL_CARD
         WHERE LENGTH(ID_CARD) IS NULL)

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM