Sql正则的使用
2022/4/8 19:19:02
本文主要是介绍Sql正则的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景
有个需求需要将数据库的字符串后面一到四位的文本去掉文本格式是(-1到-999),因此想到使用正则表达式取出来这批语句,因为不是固定长度因此选用动态获取长度去replace数据。
因为采用的是异构数据库,因此下面提供了oracle和pgsql的逻辑
步骤一:根据正则取目标值
oracle
regexp_like(t.address_desc,'-[0-9]{1,3}$')
pgsql
t.address_desc ~ '-[0-9]{1,3}$'
步骤二:获取目标结尾数据
oracle
REGEXP_SUBSTR(t.address_desc,'-[0-9]{1,3}$')
pgsql
substring(address_desc from '-[0-9]{1,3}$')
步骤三:截取想要的字符串
oracle
select substr(t.address_desc,1,length(t.address_desc)-length(REGEXP_SUBSTR(t.address_desc,'-[0-9]{1,3}$')))
pgsql
select substring(address_desc, 1, length(address_desc)-length(substring(address_desc from '-[0-9]{1,3}$')))
完整sql
oracle
select substr(t.address_desc,1,length(t.address_desc)-length(REGEXP_SUBSTR(t.address_desc,'-[0-9]{1,3}$'))) from aaa.address_desc_temp t where regexp_like(t.address_desc,'-[0-9]{1,3}$');
pgsql
select substring(address_desc, 1, length(address_desc)-length(substring(address_desc from '-[0-9]{1,3}$'))), address_desc from aaa.address_desc_temp t where t.address_desc ~ '-[0-9]{1,3}$';
这篇关于Sql正则的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11正则表达式学习:入门指南与实践技巧
- 2024-08-15正则表达式入门:基础教程与实践指南
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解
- 2023-05-17我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?