sql - REGEX 通过 SQL DB2 获取所有匹配的模式
问题描述
全部。我需要通过正则表达式从字符串中提取所有与模式“TTT\d{3}”匹配的内容
对于示例中的字符串,我想得到:
TTT108,TTT109,TTT111,TTT110
我想使用的 DB2 函数是REGEXP_REPLACE(str,'REGEX pattern', ',').
每个字符串的匹配数可以是 0,1,2,3...。
谢谢你。
这个例子:
TTT108(optional);TTT109(optional);TTT111(optional);TTT110optional);ENTITYLIST_2=(optional);ENTITYLIST_3=(optional);Containment_Status=(optional)
解决方案
如果您想提取有效字符而不是替换无效字符,请检查这是否有帮助:
with data (s) as (values
('TTT108(optional);TTT109(optional);TTT111(optional);TTT110optional);ENTITYLIST_2=(optional);ENTITYLIST_3=(optional);Containment_Status=(optional)')
)
select listagg(sst,', ') within group (order by n)
from (
select n,
regexp_substr(s,'(TTT[0-9][0-9][0-9])', 1, n)
from data
cross join (values (1),(2),(3),(4),(5)) x (n) -- any numbers table
where n <= regexp_count(s,'(TTT[0-9][0-9][0-9])')
) x (n,sst)
推荐阅读
- flutter - 令人敬畏的 fcm 推送通知
- c# - 如何在不应对的情况下重用 XAML 组件及其“.cs”代码?
- python - 每次循环重新启动时,如何防止 for 循环擦除它的输出?
- python-3.x - 禁用 Matplotlib 图表的恒定位置重置
- asp.net-core - 级联参数Task是怎么做的
在 Blazor WASM 中的 AuthorizeView 和 AuthorizedRouteView 中解包并公开为“上下文”? - angular - 显示当前用户(Angular 和 Firebase)
- python - 如何在循环中反转字符串
- java - 如何让两个单独的数组彼此相邻显示。一个是普通数组,另一个是 2d
- scheduled-tasks - 使用任务计划程序创建任务以使用命令运行 cmd.exe
- typescript - 如何为扩展基类的类(不是实例)创建类型?