2012-02-28 19 views
14

Tengo un campo que contiene valores separados por comas. Necesito extraer el último elemento en la lista. He tratado con esto:tsql última "ocurrencia de" dentro de una cadena

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

pero devuelve la última parte de la lista que acaba de empezar después de la primera aparición de coma. Por ejemplo,

a, b rendimientos b

a, b, c devuelve b, c

me gustaría utilizar una expresión regular como patrón. ¿Es posible en TSQL (sql server 2008)? ¿Alguna otra pista?

Respuesta

26

Encuentra la última , invirtiendo la secuencia y buscando la primera aparición, luego lee muchos caracteres de la derecha de la cadena;

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

(Use reverse(list_field) + ',' si existe la posibilidad de que no hay delimitadores en el campo & desea que el valor individual)

Cuestiones relacionadas