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

 相关推荐:

相关文章
相关标签/搜索