我有一个表,其中有一列包含如下字符串。
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]
如您所见,我采用任意大的值作为长度来处理可变长度。有更好的方法吗?
最佳答案
您可以将 CHARINDEX
与 REVERSE
结合使用函数查找最后一次出现的 _
,您可以使用 RIGHT
从字符串末尾获取指定数量的字符。
SELECT RIGHT([String],CHARINDEX('_',REVERSE([String]),0)-1)
<强> SQLFiddle DEMO
关于sql - 变长子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975150/