今儿个才知道SQL语句还可以搭配正则表达式作为查询条件,很是有用。

REGEXP_LIKE(匹配)
REGEXP_INSTR (包含)
REGEXP_REPLACE(替换)
REGEXP_SUBSTR(提取)

表 1:定位元字符


表 2:量词或重复操作符



表 3:预定义的 POSIX 字符类



表 4:表达式的替换匹配和分组



表 5:REGEXP_LIKE 操作符



表 6:REGEXP_INSTR 函数



表 7: 5 位数字加 4 位邮政编码表达式的说明



表 8:REGEXP_SUBSTR 函数



表 9: REGEXP_REPLACE 函数



表 10:后向引用元字符



表 11:模式交换正则表达式的说明



表 12:社会保险号码正则表达式的说明


元字符

说明

^

使表达式定位至一行的开头

$

使表达式定位至一行的末尾

SELECT * FORM. tKHXX where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$'
针对这个表达式解释一下
^ 表示开始
$ 表示结束
[]内部为匹配范围
{}里的内容表时个数,有几位

手机号码的特点是以 1开头接着是3或5再加9位的数字 所以这么理解
1开头 表达式为 ^[1]{1} 意为 开始1位里包含1
3或5 表达式为 [35]{1}
9位数字结束 为: [[:digit:]]{9}$ 这里[:digit:]为特殊写法,代表为数字 再加个结束符$.