tsql最后一个“出现”字符串内

时间:2012-02-28 09:59:46

标签: sql-server-2008 tsql string-matching last-occurrence

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

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)中是否可能? 还有其他线索吗?

1 个答案:

答案 0 :(得分:26)

通过反转字符串并查找第一个匹配项来查找最后一个,,然后从字符串的右边读取那么多字符;

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

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