如何提取具有多个逗号的字符串中两个逗号之间的值?

问题描述 投票:0回答:1

我在 Sybase 中有一个表,其中有一列 - 注释 - 其中值由多个逗号组成。

示例:

姓氏、姓名、日期、金额、错误、状态

我只想提取“错误”,在本例中是倒数第二个值。我已经能够使用下面的查询提取最后一个值,但将其移动到仅返回倒数第二个值被证明是困难的:

我的查询:

right(comments,charindex(',',reverse(comments)+',')-1)

如有任何帮助,我们将不胜感激

sql sybase
1个回答
0
投票

ASE 16 限制了选择,我建议使用“派生表”(子查询)来反转注释列,因为我们需要多次使用它来获取最后一个和倒数第二个逗号的位置。

SELECT 
    SUBSTRING(
        d.comments,
        CHARINDEX(',', d.rev_comments, CHARINDEX(',', d.rev_comments) + 1) + 1,
        CHARINDEX(',', d.rev_comments) - 1
    ) AS second_last_portion
FROM (
    SELECT
          *
        , REVERSE(comments) AS rev_comments
    FROM your_table
    ) AS d

nb:ASE 16 不支持 REGEXP_SUBSTR() 或横向连接或应用运算符 - 否则这对于解决此类问题很有用。

© www.soinside.com 2019 - 2024. All rights reserved.