postgresql 数据库 用正则提取非中文、非单词、非数字 字符

1、在postgre数据库中通过正则将2千万数据中的字符给提取出来:

select  *  from  表名  where  字段名 ~'[\u2e80-\ua4cf]|[\uf900-\ufaff]|[\ufe30-\ufe4f]|[\^A-Z]|[\^a-z]|[\^0-9]|[\^a-z0-9A-Z]' 

注释: 

[\^a-z0-9A-Z]: a-z:小写字母、0-9数字、A-Z大写字母  ^ 表示从开头开始匹配,\表示原义匹配

[\^A-Z]:表示匹配大写字母

[\^a-z]:表示匹配小写字母

[\^0-9]:表示匹配数字

[\u2e80-\ua4cf]|[\uf900-\ufaff]|[\ufe30-\ufe4f]:表示匹配当前字段内容中的特殊符号,如:

上面的sql需要优化,如果数据量小,没问题,如果数据量大,跑起来特别的慢,需要稍微更改下sql:

select * from

(

select 表名1,表名2,表名3  ~'[\u2e80-\ua4cf]|[\uf900-\ufaff]|[\ufe30-\ufe4f]|[\^A-Z]|[\^a-z]|[\^0-9]|[\^a-z0-9A-Z]'  as 虚拟列名4 from 表名 

) as a  where 虚拟列名4 ='f'

#sql注释:f意思是false的意思,虚拟列名4这一列表示的是bool类型,值为true和false,所以虚拟列名4可以等于‘f’或者是‘t’,意思是把虚拟列4这一列把值为false的都筛选出来。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值