我在表中有一个字段,它由一串用分号分隔的值组成,例如apple; banana; orange; pear
我一直在尝试构建一个 SELECT 语句来返回从右边数第一个和第二个分号之间的第二组(如果只有 1 个分号,则现在将返回 null)。
例如橙色。
我一直在测试和尝试 ChatGPT,但我得到的最接近的结果是下面的,它返回从右边数第二个分号右边的所有内容。
例如:橙子;梨
我只是不知道该怎么做才能不显示右侧第一个分号右侧的任何值。或者可能是我的数据集问题,因为我确实看到有时使用逗号代替分号,但这也可能是另一回事。
LTRIM(RTRIM(
CASE
-- Ensure there are more than two semicolons
WHEN LEN(@string) - LEN(REPLACE(@string, ';', '')) >= 2
THEN SUBSTRING(
@string,
LEN(@string) - CHARINDEX(';', REVERSE(@string), CHARINDEX(';', REVERSE(@string)) + 1) + 2,
CHARINDEX(';', REVERSE(@string), CHARINDEX(';', REVERSE(@string)) + 1) - 1
)
ELSE ''
END
)) AS SecondGroupFromRight
非常感谢您的帮助。提前致谢