加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – regex_substr中的connect by子句

发布时间:2021-01-18 16:17:20 所属栏目:编程 来源:网络整理
导读:我无法领略这个告诉 – 在谷歌搜刮后不是eveN pv_no_list :='23,34,45,56';SELECT DISTINCT REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) no_list FROM DUAL CONNECT BY REGEXP_SUBSTR (pv_no_list,LEVEL) IS NOT NULL 办理要领 毗连的“滥用”(如Colin’t Ha

我无法领略这个告诉 – 在谷歌搜刮后不是eveN

pv_no_list :='23,34,45,56';
SELECT   DISTINCT REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL)
                                         no_list
                      FROM   DUAL
                CONNECT BY   REGEXP_SUBSTR (pv_no_list,LEVEL) IS NOT NULL

办理要领

毗连的“滥用”(如Colin’t Hart所说)在这里有一个很好的用途:
通过行使REGEXP_SUBSTR,您只能提取4个匹配项中的一个(23,56):正则表达式[^,]匹配字符串中不包括逗号的任何字符序列.

假如您实行运行:

SELECT REGEXP_SUBSTR ('23,56',]+') as "token" 
FROM   DUAL

你会获得23.

假如你试试跑:

SELECT REGEXP_SUBSTR ('23,1) as "token"
FROM   DUAL

此刻我们也配置了two additional parameters:你也会获得23:开始探求位置1(这是默认值),并返回第一次呈现.

此刻让我们运行:

SELECT REGEXP_SUBSTR ('23,2) as "token"
FROM   DUAL

这次我们获得34(第二次呈现)而且行使3作为最后一个参数将返回45,依此类推.

行使递归毗连和级别确保您将收到全部相干功效(不必然凭证原始次序!):

SELECT DISTINCT REGEXP_SUBSTR ('23,LEVEL) as "token"
FROM   DUAL
CONNECT BY REGEXP_SUBSTR ('23,LEVEL) IS NOT NULL
order by 1

将返回:

TOKEN
23
34
45
56

它不只包括全部4个功效,还将其解析为功效齐集的单独行!

假如您将行使fiddle – 它也许会让您更清晰地相识该主题.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读