SQL中正则表达式应用

SQL中正则表达式的应用

  • 四种函数:
  1. REGEXP_LIKE----------匹配
  2. REGEXP_INSTR -------包含
  3. REGEXP_REPLACE -----替换
  4. REGEXP_SUBSTR -------提取
  • 在SQL中的用法举例
--- 查询表中证件号码是由15位到18位字母或数字组成 的数据
select psn_no, name  from person where  regexp_like(psn_no, '^([0-9]|[a-z]|[A-Z]){15,18}');
  • 在存储过程中的应用举例
/*验证当“人员证件类型”为01的时候校验证件号码长度大于等于15 小于等于18的字母或数字组成*/
    V_CNT := 0;
    reg := '([0-9]|[A-Z]|[a-z]){15,18}$';
    BEGIN
      execute immediate 'select count(1) from PSN_CERT_INFO_B where psn_cert_type = ''01'' and not regexp_like(CERTNO, '''||reg||''')'
        INTO V_CNT;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        V_CNT := 0;
      WHEN OTHERS THEN
        PRM_APPCODE := -1;
        PRM_ERRMSG  := '验证PSN_CERT_INFO_B中CERTNO字段失败!错误原因:' ||
                       SQLERRM;
    END;
    /*将不符合要求的数据数量赋给V_CNT变量*/
    if V_CNT > 0 then
      INSERT_CHECKDATA('PSN_CERT_INFO_B',
                       '验证CERTNO字段格式失败,存在不符合长度大于等于15 小于等于18的字母或数字组成!',
                       V_CNT);
    end if;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值