15

我有包含逗号分隔值的字段。我需要提取列表中的最后一个元素。我试过这个:

select list_field, LTRIM(RTRIM(right(list_field, len(list_field) - CHARINDEX(',',list_field))))

但它返回列表的最后一部分,在第一个逗号出现之后开始。例如,

a,b 返回 b

a,b,c 返回 b,c

我想使用类似正则表达式的模式。在 TSQL(sql server 2008)中是否有可能?还有其他线索吗?

4

1 回答 1

26

通过反转字符串并查找第一次出现的位置来找到最后,一个,然后从字符串的右侧读取那么多字符;

rtrim(right(list_field, charindex(',', reverse(list_field)) - 1))

reverse(list_field) + ','如果字段中可能没有分隔符并且您想要单个值,则使用)

于 2012-02-28T10:03:38.667 回答