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

本文介绍了一种统计数据库中指定字段长度既不等于18也不等于15的数据的方法,通过使用SQL语句结合length()和isnull函数,有效地解决了空值和特定长度数据的统计问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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)

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

 

 

转载于:https://www.cnblogs.com/Marydon20170307/p/10978621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值