gpt4 book ai didi

sql - regexp_substr中的by子句连接

转载 作者:行者123 更新时间:2023-12-03 13:56:21 25 4
gpt4 key购买 nike

我无法理解此声明-到处搜寻

 
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,
'[^,]+',
1,
LEVEL) IS NOT NULL



最佳答案

connected by的“滥用”(正如Colin't Hart所说的)在这里具有良好的用途:
通过使用REGEXP_SUBSTR,您只能提取4个匹配项之一(23、34、45、56):正则表达式[^,]+匹配字符串中不包含逗号的任何字符序列。

如果您尝试运行:

SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+') as "token" 
FROM DUAL


您将得到 23

如果您尝试运行:

SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,1) as "token"
FROM DUAL


您也将得到 23,因为现在我们还设置了 two additional parameters:从位置1开始查找(这是默认设置),并返回第一个出现的位置。

现在运行:

SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,2) as "token"
FROM DUAL


这次我们得到 34(第二次出现),并将 3作为最后一个参数将返回 45,依此类推。

递归 connected bylevel的使用可确保您将收到所有相关结果(不过不一定按原始顺序!):

SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1


将返回:

TOKEN
23
34
45
56


它不仅包含所有4个结果,而且还将其分成结果集中的单独行!

如果您 fiddle使用它-它可以使您更清楚地了解主题。

关于sql - regexp_substr中的by子句连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com