Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串中间分隔符之间的T-SQL子字符串_Sql_Sql Server_Tsql - Fatal编程技术网

字符串中间分隔符之间的T-SQL子字符串

字符串中间分隔符之间的T-SQL子字符串,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要从有多个相同分隔符的字符串中提取一个子字符串。必须在sql查询中完成(无函数调用等) 数据示例: DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS PA:TIER4:VQ:SPI:H:SID005000009V3VO7:STPACPB3:CI 我需要的数据介于最后一个冒号和倒数第二个冒号之间 数据: 数据将始终处于相同的位置。最后三个字符的格式始终为:XX 我开始了一个查询,但似乎无法正确地将其反转 Select SubString('DI:

我需要从有多个相同分隔符的字符串中提取一个子字符串。必须在sql查询中完成(无函数调用等)

数据示例:

DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS
PA:TIER4:VQ:SPI:H:SID005000009V3VO7:STPACPB3:CI
我需要的数据介于最后一个冒号和倒数第二个冒号之间

数据:

数据将始终处于相同的位置。最后三个字符的格式始终为:XX

我开始了一个查询,但似乎无法正确地将其反转

Select SubString('DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS', (CHARINDEX(':', 'DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS', 0) + 1), 
        (CharIndex(':', RIGHT('DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS', (LEN('DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS') - (CharIndex(':', 'DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS', 0)))), 0) - 1)) As NewString
感谢您的帮助

克里斯

如果数据(最后两个字段)长度固定:

SELECT LEFT(RIGHT('DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS',11),8)
SELECT LEFT(RIGHT('DI:TIER1:VQ:SPI:H:SID005000009MTED0:FDCADIND:PS',11),8)