2012-02-28 23 views
14

Virgülle ayrılmış değerler içeren bir alanım var. Listede son elemanı çıkarmalıyım. Bununla denedim:tsql dize içinde son "ortaya çıkma"

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

Ama sadece ilk virgül ortaya çıktıktan sonra başlayan listenin son bölümünü döndürür.

B örneğin ,

a, b döner a, b, c I desen gibi düzenli ifade kullanmak isteyen

C, B döndürür. TSQL'de (sql server 2008) mümkün mü? Başka herhangi bir ipucu?

cevap

26

Dizeyi ters çevirip ilk tekrarı arayarak son ,'u bulun, sonra dizenin sağındaki birçok karakteri okuyun;

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

(alanında & hiçbir sınırlayıcı Eğer tek bir değeri istediğiniz olasılığı varsa reverse(list_field) + ',' kullanın)