sous-chaîne de longueur variable

J'ai une table avec une colonne qui contient des chaînes de caractères comme ci-dessous.

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

J'ai besoin d'obtenir la sous-chaîne à partir de la deuxième occurrence de _ jusqu'à la fin de la chaîne et comme vous pouvez le voir la sous-chaîne n'est pas de longueur fixe. La première partie n'est pas toujours fixe, il peut changer. A partir de maintenant je suis en utilisant le code suivant pour l'atteindre.

SELECT SUBSTRING([String],CHARINDEX('_',[String],(CHARINDEX('_',[String])+1))+1,100)
FROM [Table]

Comme vous pouvez le voir, je suis prise d'un arbitraire de grande valeur comme la longueur à prendre soin de longueur variable. Est-il une meilleure façon de le faire?

Sera-t-il toujours être exactement 2 underscores?
Est la première partie toujours RTSPP_LZ_ ou pourrait avoir d'autres valeurs?
A partir de maintenant je n'ai pas rencontré un cas avec plus de 2 caractères de soulignement. Il pourrait se produire dans le futur, dans un tel cas, le dernier caractère de soulignement jusqu'à la fin de la chaîne. Un plus solution générique qui peut gérer la n-ième occurrence de trait de soulignement serait grandement apprécié
Pas toujours le cas, ils peuvent changer comme RTSPP_BTE_CC1 RTSPP_BTE_PUN1 RTSPP_BTE_PUN2

OriginalL'auteur Ram | 2013-07-31