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

1.情景展現

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

2.緣由分析

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

  第二步:篩選數據。oracle

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

 

3.解決方案

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

  由於id_card字段爲空的行記錄,調用length()後,返回的結果也是null。blog

  因此,只能用is null 來實現。字符串

  因此,最終結果爲:get

--對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)

 

寫在最後

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

 相關推薦:

相關文章
相關標籤/搜索