Sql 使用RegExp拆分字符串
以下字符串中包含一些变量:Sql 使用RegExp拆分字符串,sql,oracle,plsql,Sql,Oracle,Plsql,以下字符串中包含一些变量: sText := '%CUSTOMER_LASTNAME%%CUSTOMER_PRENAME% - LANG: %LANGUAGE%' 我制作了一个自定义的SPLIT_字符串函数,希望得到字符串中的每个变量: sStr := SPLIT_STRING(sText,'%'); 我现在得到的是: 无效的 客户姓氏 无效的 客户名称, “-Lang”: 语言 无效的 我需要的是: 客户姓氏 客户名称 语言 我可以使用RegExp执行拆分字符串吗?或者如何执行 短暂性脑缺
sText := '%CUSTOMER_LASTNAME%%CUSTOMER_PRENAME% - LANG: %LANGUAGE%'
我制作了一个自定义的SPLIT_字符串函数,希望得到字符串中的每个变量:
sStr := SPLIT_STRING(sText,'%');
我现在得到的是:
无效的
客户姓氏
无效的
客户名称,
“-Lang”:
语言
无效的
我需要的是:
客户姓氏
客户名称
语言
我可以使用RegExp执行拆分字符串吗?或者如何执行
短暂性脑缺血发作
frgtv10
我可以使用RegExp执行拆分字符串吗
是的,你可以。下面是一个如何做到这一点的例子
SQL> with t1(col) as(
2 select '%CUSTOMER_LASTNAME%%CUSTOMER_PRENAME%- LANG: %LANGUAGE%' from dual
3 )
4 , ocrs as(
5 select level as ocr
6 from ( select max(regexp_count(col, '%[^%]+%')) mxo
7 from t1
8 ) s
9 connect by level <= s.mxo
10 )
11 select ltrim(rtrim(regexp_substr(col, '%[^%]+%', 1, o.ocr), '%'), '%') as res
12 from t1
13 cross join ocrs o
14 ;
Result:
RES
--------------------
CUSTOMER_LASTNAME
CUSTOMER_PRENAME
LANGUAGE
哇,这对我来说有点奇怪。可以把它放在函数中吗?我真的需要从两个部分中进行选择吗?哇。。我需要特别为regexp获取一个证书:@frgtv10 with子句只是用来表示您提供的数据样本——简单地说,是一种表替换。这是可行的,但如何将其放入函数中以使用它可能像SPLIT_STRING函数一样?@ajmalmhd04 lol,也许可以开始提供证书。在那之前,这里有一些东西可以让你走。