--- 查询表中证件号码是由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;
目录SQL中正则表达式的应用SQL中正则表达式的应用四种函数:REGEXP_LIKE----------匹配REGEXP_INSTR -------包含REGEXP_REPLACE -----替换REGEXP_SUBSTR -------提取在SQL中的用法举例--- 查询表中证件号码是由15位到18位字母或数字组成 的数据select psn_no, name from person where regexp_like(psn_no, '^([0-9]|[a-z]|[A