Ram*_*Ram 10 sql sql-server substring sql-server-2012
我有一个表格,其中包含如下字符串的列.
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
Run Code Online (Sandbox Code Playgroud)
我需要从第二次出现_直到字符串结尾获取子字符串,因为您可以看到子字符串不是固定长度.第一部分并不总是固定它可以改变.截至目前,我正在使用以下代码来实现它.
SELECT SUBSTRING([String],CHARINDEX('_',[String],(CHARINDEX('_',[String])+1))+1,100)
FROM [Table]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将任意大的值作为处理可变长度的长度.有没有更好的方法呢?
Nen*_*vic 13
您可以CHARINDEX结合使用REVERSE函数来查找最后一次出现_,并且您可以使用RIGHT从字符串末尾获取指定数量的字符.
SELECT RIGHT([String],CHARINDEX('_',REVERSE([String]),0)-1)
Run Code Online (Sandbox Code Playgroud)
您可以尝试将len([string])作为最后一个参数:
SELECT SUBSTRING([String],CHARINDEX('_',[String],(CHARINDEX('_',[String])+1))+1,len([string])) FROM [Table]
Run Code Online (Sandbox Code Playgroud)