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; 


标签:oracle
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号