SQL中的正则表达式函数

REGEXP函数

常用的regexp函数

1,REGEXP_LIKE() :与LIKE的功能相似

2,REGEXP_INSTR():与INSTR的功能相似,返回发现指定的字符的位置。

3,REGEXP_SUBSTR() :与SUBSTR的功能相似

4,REGEXP_REPLACE():与REPLACE的功能相似

5,REGEXP_COUNT():计算一个字符串出现在另一个字符串的次数。(Oracle的11g引入此函数。)

数据准备
-- 创建表
CREATE TABLE TMP_FZQ
(
ID VARCHAR(4),
VALUE VARCHAR(10)
);
-- 数据插入
INSERT INTO TMP_FZQ VALUES ('1','1234560');
INSERT INTO TMP_FZQ VALUES ('2','1234560');
INSERT INTO TMP_FZQ VALUES ('3','1b3b560');
INSERT INTO TMP_FZQ VALUES ('4','abc');
INSERT INTO TMP_FZQ VALUES ('5','abcde');
INSERT INTO TMP_FZQ VALUES ('6','ADREasx');
INSERT INTO TMP_FZQ VALUES ('7','123 45');
INSERT INTO TMP_FZQ VALUES ('8','adc de');
INSERT INTO TMP_FZQ VALUES ('9','adc,.de');
INSERT INTO TMP_FZQ VALUES ('10','1B');
INSERT INTO TMP_FZQ VALUES ('10','abcbvbnb');
INSERT INTO TMP_FZQ VALUES ('11','11114560');
INSERT INTO TMP_FZQ VALUES ('11','11124560');
示例
REGEXP_LIKE()
SQL> SELECT * FROM TMP_FZQ WHERE REGEXP_LIKE(VALUE,'6');  -- 筛选出包含6的数据

ID   VALUE
---- ----------
1    1234560
2    1234560
3    1b3b560
11   11114560
11   11124560
SQL> SELECT * FROM TMP_FZQ WHERE REGEXP_LIKE(VALUE,'[A-Z]');	-- 筛选出包含大写字母的数据

ID   VALUE
---- ----------
6    ADREasx
10   1B
REGEXP_INSTR()

REGEXP_INSTR (oracle.com)

SQL> SELECT ID,VALUE,REGEXP_INSTR(VALUE,'(45)') COL FROM TMP_FZQ;

ID   VALUE             COL
---- ---------- ----------
1    1234560             4
2    1234560             4
3    1b3b560             0
4    abc                 0
5    abcde               0
6    ADREasx             0
7    123 45              5
8    adc de              0
9    adc,.de             0
10   1B                  0
10   abcbvbnb            0
11   11114560            5
11   11124560            5

13 rows selected
REGEXP_SUBSTR()
SQL> SELECT * FROM TMP_FZQ WHERE REGEXP_SUBSTR(VALUE,'[1-6]{6}') = '123456';

ID   VALUE
---- ----------
1    1234560
2    1234560
SQL> SELECT REGEXP_SUBSTR(VALUE,'(123)(60)',1,1,'i',1) col FROM TMP_FZQ;

COL
--------------------

13 rows selected
REGEXP_REPLACE()
SQL> SELECT ID,VALUE,REGEXP_REPLACE(VALUE,'[0-9]','') COL FROM TMP_FZQ;

ID   VALUE      COL
---- ---------- --------------------------------------------------------------------------------
1    1234560    
2    1234560    
3    1b3b560    bb
4    abc        abc
5    abcde      abcde
6    ADREasx    ADREasx
7    123 45     
8    adc de     adc de
9    adc,.de    adc,.de
10   1B         B
10   abcbvbnb   abcbvbnb
11   11114560   
11   11124560   

13 rows selected
REGEXP_COUNT()
SQL> SELECT ID,VALUE,REGEXP_COUNT(VALUE,'[0-9]') COL FROM TMP_FZQ;

ID   VALUE             COL
---- ---------- ----------
1    1234560             7
2    1234560             7
3    1b3b560             5
4    abc                 0
5    abcde               0
6    ADREasx             0
7    123 45              5
8    adc de              0
9    adc,.de             0
10   1B                  1
10   abcbvbnb            0
11   11114560            8
11   11124560            8

13 rows selected
参考文章

Oracle中RegExp_Like 正则表达式基本用法 - IT情深 - 博客园 (cnblogs.com)

ORACLE REGEXP_LIKE 特殊转义字符 - CSDN文库

Oracle 正则表达式详解(regexp_substr、regexp_instr、regexp_replace、regexp_like、regexp_count)-CSDN博客

oracle 通配符及regexp_count函数说明 - YaoYiYao - 博客园 (cnblogs.com)

巧用SQL:Oracle中实现split相关方法总结-腾讯云开发者社区-腾讯云 (tencent.com)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a_Yogurt

你的鼓励就是最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值