2012-02-28 47 views
14

Tôi đã có trường chứa giá trị được phân cách bằng dấu phẩy. Tôi cần trích xuất phần tử cuối cùng trong danh sách. Tôi đã thử với điều này:tsql "lần xuất hiện cuối cùng" bên trong một chuỗi

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

Nhưng nó trả về phần cuối cùng của danh sách chỉ bắt đầu sau lần xuất hiện dấu phẩy đầu tiên. Ví dụ,

một, lợi nhuận b b

a, b, c trả b, c

Tôi muốn sử dụng một regex như mẫu. Có thể trong TSQL (sql server 2008)? Bất kỳ manh mối nào khác?

Trả lời

26

Tìm số , cuối cùng bằng cách đảo ngược chuỗi và tìm kiếm lần xuất hiện đầu tiên, sau đó đọc nhiều ký tự từ bên phải của chuỗi;

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

(Sử dụng reverse(list_field) + ',' nếu có khả năng không có delimiters trong lĩnh vực & bạn muốn giá trị duy nhất)

Các vấn đề liên quan