例如,我的“标签”栏有
"movie/spiderman,genre/action,movie:marvel",
"movie/kingsman,genre/action",
"movie/spiderman,genre/action,movie:marvel,movie:dfjkl,movie:fskj,movie:aa,movie:mdkk"
我试图返回第 5 个逗号之前的所有内容。下面是结果示例
"movie/spiderman,genre/action,movie:marvel",
"movie/kingsman,genre/action",
"movie/spiderman,genre/action,movie:marvel,movie:dfjkl,movie:fskj"
我尝试了下面的代码,但它不起作用。
select
NVL(SUBSTRING(tags, 1,REGEXP_INSTR(tags,',',1,5) -1),tags)
from myTable
最佳答案
你可以使用
REGEXP_REPLACE(tags, '^(([^,]*,){4}[^,]*).*', '\\1')
请参阅regex demo .
REGEXP_REPLACE
将查找以下模式的出现:
^
- 字符串开头(([^,]*,){4}[^,]*)
- 第 1 组(\1
指匹配的这一部分):四个序列,其中包含除逗号和逗号之外的任意零个或多个字符,然后是除逗号之外的零个或多个字符.*
- 字符串的其余部分。
\1
替换会恢复结果字符串中的第 1 组值。
关于SQL,提取第5个逗号之前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70793094/