首页 > 编程知识 正文

sql 正则表达式,oracle sql正则表达式

时间:2023-05-05 16:07:26 阅读:264223 作者:938

1. sql中的正则表达式概述

SQL中可以使用like %进行模糊匹配。
在一些稍复杂的查询场景中,sql也支持正则表达式的匹配,Mysql中使用REGEXP操作符进行正则表达式的匹配。

正则模式 分类正则模式描述说明定位元字符^匹配开头$匹配结尾表达式的替换匹配和分组.匹配除 “n” 之外的任何单个字符[.n]匹配任意单个字符[abc]匹配所包含的字符集合中的任意单个字符[^abc]匹配所包含的字符集合之外的任意单个字符(ab( )标记一个子表达式的开始和结束位置。量词或重复操作符*匹配前面的子表达式零次或多次?匹配 0 次或 1 次+匹配前面的子表达式一次或多次{n}n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次最多匹配 m 次预定义的 POSIX 字符类[:alpha:]任何字母。[:digit:]任何数字。[:alnum:]任何字母和数字。[:space:]任何白字符。[:upper:]任何大写字母。[:lower:]任何小写字母。[:punct:]任何标点符号。[:xdigit:]任何16进制的数字,相当于[0-9a-fA-F]。2. 操作符运算优先级

各种操作符的运算优先级
转义符
(), (??, (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 位置和顺序
|

3. 各类正则表达式函数 3.1 ORACLE中的支持正则表达式的函数主要有下面四个: REGEXP_LIKE(匹配)REGEXP_INSTR (包含)REGEXP_REPLACE(替换)REGEXP_SUBSTR(提取)

例子:

SELECT * from byh_user where REGEXP_LIKE(mobile, '^[1]{1}[345]{1}[[:digit:]]{9}$') 3.2 Hive正则匹配函数 (1)regexp_extract
语法: regexp_extract(string subject, string pattern, int index)
返回值: string
说明: 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。
第一参数: 要处理的字段
第二参数: 需要匹配的正则表达式
第三个参数:
0是显示与之匹配的整个字符串
1 是显示第一个括号里面的
2 是显示第二个括号里面的字段…
例子: selectregexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',0), -- x=18abcregexp_extract('x=a3&x=18abc&x=2&y=3&x=4','^x=([a-z]+)([0-9]+)',0) -- x=a3 (2)regexp_replace
例子:
regexp_replace(mobile,’[^0-9]’,’’)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。