我有一个包含如下字符串的列的表。可变长度的子串
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次出现将是一个更通用的解决方案不胜感激 – Ram