私は以下のような文字列を含むカラムを持つテーブルを持っています。可変長の部分文字列
RTSPP_LZ_AEN
RTSPP_LZ_CPS
RTSPP_LZ_HOUSTON
RTSPP_LZ_LCRA
RTSPP_LZ_NORTH
RTSPP_LZ_RAYBN
RTSPP_LZ_SOUTH
RTSPP_LZ_WEST
RTSPP_BTE_CC1
RTSPP_BTE_PUN1
RTSPP_BTE_PUN2
は、私は、文字列の最後まで_
の第二の発生から部分文字列を取得する必要があり、あなたが見ることができるようにサブストリングが固定長ではありません。最初の部分は常に固定されているわけではありません。今のところ私はそれを達成するために次のコードを使用しています。
SELECT SUBSTRING([String],CHARINDEX('_',[String],(CHARINDEX('_',[String])+1))+1,100)
FROM [Table]
ご覧のとおり、私は可変長の世話をするための長さとして任意の大きな値を取っています。それを行う良い方法はありますか?
いつも正確に2つのアンダースコアがありますか? –
最初の部分は常にRTSPP_LZ_ですか、それとも他の値を持つことができますか? –
@AaronBertrand今のところ私は2つ以上のアンダースコアを持つケースに遭遇していません。このような場合、文字列の最後までの最後のアンダースコアが将来発生する可能性があります。アンダースコアのn番目の発生を扱うことができ、より汎用的な解決策を大幅に必ずしも、彼らがRTSPP_BTE_CC1 RTSPP_BTE_PUN1 RTSPP_BTE_PUN2 – Ram