SQL中的正则表达式

SQL中的正则表达式正则表达式通常用来匹配字符 比如在一段字符中截取我们想要的字符 又或者将不想要的字符串替换 或者统计某个或者某几个字符出现的次数 我们都可以使用 Oracle 提供的正则表达式语法来完成 1

大家好,欢迎来到IT知识分享网。

正则表达式通常用来匹配字符,比如在一段字符中截取我们想要的字符,又或者将不想要的字符串替换,或者统计某个或者某几个字符出现的次数,我们都可以使用Oracle提供的正则表达式语法来完成。

1.比如,我们在数据库中只想得到DB_LINK中的IP地址

OWNER DB_LINK HOST ------------------------------ ------------------------------ -------------------------------------------------- PUBLIC TO_YX DEMO = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1 8.45)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = db_2_server) ) ) 

我们可以利用正则表达式来截取IP地址

SQL> select owner,db_link,regexp_substr(host, '[0-9]+.[0-9]+.[0-9]+.[0-9]+') db_link from dba_db_links; OWNER DB_LINK DB_LINK ------------------------------ ------------------------------ ------------------------------ PUBLIC TO_YX 192.168.18.45 

2.我们需要统计某个或者某几个字符出现的次数

SQL> select 'aaaa999ddd^^^^kkkk$$#39; a from dual; A ----------------------- aaaa999ddd^^^^kkkk$$$ 

比如统计^出现的次数(注意转义符)

 SQL> select regexp_count('aaaa999ddd^^^^kkkk$$#39;,'\^') a from dual; A ---------- 4 

比如统计数字出现的次数

SQL> select regexp_count('aaaa999ddd^^^^kkkk$$#39;,'[0-9]') a from dual; A ---------- 3 

统计英文字母出现的次数(不区分大小写)

SQL> select regexp_count('aaaa999ddd^^^^kkkk$DDDD$$','[a-zA-Z]') a from dual; A ---------- 15 

3.将数字替换为空

 SQL> select regexp_replace('aaaa999ddd^^^^kkkk$DDDD$$','[0-9]','') a from dual; A ------------------------ aaaaddd^^^^kkkk$DDDD$$ 

将字符替换为空

SQL> select regexp_replace('aaaa999ddd^^^^kkkk$DDDD$$','[[:alpha:]]','') a from dual; A ------------ 999^^^^$$$ 
SQL> select regexp_replace('aaaa999ddd^^^^kkkk$DDDD$$','[a-zA-Z]','') a from dual; A ------------ 999^^^^$$$ 

正则表达式的出现帮助我们在杂乱的数据中可以提取自己想要的数据。使用起来很有帮助,比如你可以使用外部表的方式将Oracle 监听日志加载到数据库中,然后利用正则表达式去提取ip地址,可以分析哪个ip连接数据库比较多。当然在Linux上面直接可以写shell去统计。比如sed,awk都是非常强大的文本处理工具。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/166263.html

(0)
上一篇 2025-01-05 07:00
下一篇 2025-01-05 07:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信