功能:检查字符串是否匹配正则表达式模式 查找名字以元音字母开头的员工 SELECT first_name FROM employees WHERE REGEXP_LIKE(first_name, '^[AEIOU]', 'i'); ^ 表示字符串开头 [AEIOU] 匹配任意大写元音字母 'i' 表示不区分大小写 |
验证邮箱格式 SELECT email FROM employees WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'); |
|
|
|
功能:返回匹配子字符串的起始位置 示例 1:查找电话号码中第一个区号的位置 SELECT phone_number, REGEXP_INSTR(phone_number, '\(\d{3}\)') as area_code_pos FROM employees; SELECT REGEXP_INSTR('(123) 456-7890','\(\d{3}\)') as area_code_pos FROM dual; 1 示例 2:查找第二个数字序列的位置 SELECT 'Order123Item456' as text, REGEXP_INSTR('Order123Item456', '\d+', 1, 2) as second_num_pos FROM dual; 13 \d+ 匹配一个或多个连续的数字 1 从第 1 个字符开始搜索 2 查找第 2 次出现的位置 |
|
|
|
|
功能:提取匹配正则表达式的子字符串 SELECT REGEXP_SUBSTR('订单号:12345,金额:678.90元', '\d+(\.\d+)?') as amount FROM dual; \d+ 匹配一个或多个数字 (\.\d+)? 可选的小数部分 12345 SELECT REGEXP_SUBSTR('订单号:12345,金额:678.90元', '\d+(\.\d+)?',1,2) as amount FROM dual; 678.90 |
SELECT REGEXP_SUBSTR('https://www.oracle.com/database', '//([^/]+)', 1, 1, '', 1) as domain FROM dual; 参数说明: 源字符串:'https://www.oracle.com/database' 这是要搜索的原始字符串 正则表达式模式:'//([^/]+)' //:匹配两个斜杠 ([^/]+):捕获组,匹配一个或多个不是斜杠(/)的字符 整个模式会匹配从//开始到下一个/之前的所有内容 开始位置:1 表示从源字符串的第一个字符开始搜索 出现次数:1 表示返回第一次匹配的结果 匹配修饰符:'' 空字符串表示不使用任何特殊匹配选项 可能的选项包括:'i'(不区分大小写), 'c'(区分大小写), 'n'(允许点号匹配换行符)等 子表达式索引:1 表示返回第一个捕获组的内容(即括号内的部分) 如果为0或省略,则返回整个匹配的字符串 执行结果: 这个函数会返回www.oracle.com,因为: 它找到//www.oracle.com的匹配 然后返回第一个捕获组([^/]+)的内容,即www.oracle.com 如果不使用子表达式索引(即参数设为0或省略),则会返回//www.oracle.com。 |
|
|
|
功能:用新文本替换匹配正则表达式的文本 SELECT REGEXP_REPLACE('信用卡号:1234-5678-9012-3456', '\d{4}-\d{2}', 'XXXX-XX') as masked_card FROM dual; 信用卡号:XXXX-XX78-XXXX-XX56 |
SELECT REGEXP_REPLACE('20230515', '(\d{4})(\d{2})(\d{2})', '\1-\2-\3') as formatted_date FROM dual; 2023-05-15 |
|
|
|