sql之Oracle之获取字符第 n 次出现之前的所有字符
落叶无声
阅读:15
2025-01-19 22:14:33
评论:0
我正在尝试获取一个查询,在该查询中,我从一个字符出现“n”之前的字符串中获取所有字符。
假设我可以有以下字符串:
'123456,123456,123456'
'123456'
'123456,123456,123456,123456,123456,123456'
'123456,123456,123456,123456,123456,123456,123456'
现在我希望我的查询始终返回逗号第 5 次出现之前的所有内容,
结果:
'123456,123456,123456'
'123456'
'123456,123456,123456,123456,123456'
'123456,123456,123456,123456,123456'
我一直在尝试使用一些 substr 或正则表达式,但我无法理解这一点。
请您参考如下方法:
INSTR函数正是您查找第 n 个子字符串的位置所需要的 - 请参阅出现参数。
要获取此位置之前的字符串部分,请使用 SUBSTRING。 为避免没有第 N 个符号的情况,请使用 NVL(或 COALESCE)。
例如(将 5 替换为 N 并插入您的列):
SELECT NVL(
SUBSTR(YOUR_COLUMN, 1,
INSTR(YOUR_COLUMN,',',1,5) -1),
YOUR_COLUMN)
FROM YOUR_TABLE;
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。