web-dev-qa-db-ja.com

文字列内のtsqlの最後の「発生」

カンマ区切りの値を含むフィールドがあります。リストの最後の要素を抽出する必要があります。私はこれで試しました:

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)で可能ですか?他の手がかりはありますか?

14
Alberto De Caro

文字列を逆にして最初の出現箇所を探して最後の_,_を見つけ、文字列の右側からその数の文字を読み取ります。

_rtrim(right(list_field, charindex(',', reverse(list_field)) - 1))
_

(フィールドに区切り文字がない可能性があり、単一の値が必要な場合は、reverse(list_field) + ','を使用します)

26
Alex K.