如何在Oracle数据库中使用REGEXP_LIKE函数校验符合规则的字符串
基于REGEXP_LIKE的字符串合规校验方案
校验规则回顾
- 字符串长度固定为9个字符
- 首字符必须为大写英文字母
- 剩余8个字符需为0-9的数字
- 不允许包含任何特殊字符
实现代码
直接使用如下正则表达式作为REGEXP_LIKE的匹配规则即可:
-- 通用写法,适用于Oracle、MySQL 8.0+等支持REGEXP_LIKE的数据库 REGEXP_LIKE(待校验字段名, '^[A-Z][0-9]{8}$') -- Oracle环境下可追加参数'c'强制大小写敏感,避免数据库默认忽略大小写导致首字母小写也通过校验 REGEXP_LIKE(待校验字段名, '^[A-Z][0-9]{8}$', 'c')
函数返回值为TRUE代表校验通过,返回FALSE代表不符合规则。
匹配逻辑说明
^标记字符串的起始位置,避免字符串前缀出现多余字符[A-Z]匹配第一位的大写英文字母,满足首字符规则[0-9]{8}匹配连续8位0-9的数字,加上首字符总长度正好为9,同时满足长度规则和剩余字符的数字要求$标记字符串的结束位置,避免字符串后缀出现多余的特殊字符或其他内容,完全杜绝非法字符混入
使用示例
以筛选user_info表中cert_code字段符合规则的记录为例:
SELECT * FROM user_info WHERE REGEXP_LIKE(cert_code, '^[A-Z][0-9]{8}$');
内容的提问来源于stack exchange,提问作者gayatri mali
相关产品推荐
相关产品推荐

