我在 Sybase 中有一个表,其中有一列 - 注释 - 其中值由多个逗号组成。
示例:
姓氏、姓名、日期、金额、错误、状态
我只想提取“错误”,在本例中是倒数第二个值。我已经能够使用下面的查询提取最后一个值,但将其移动到仅返回倒数第二个值被证明是困难的:
我的查询:
right(comments,charindex(',',reverse(comments)+',')-1)
如有任何帮助,我们将不胜感激
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() 或横向连接或应用运算符 - 否则这对于解决此类问题很有用。