字符串中间分隔符之间的T-SQL子字符串
我需要从有多个相同分隔符的字符串中提取一个子字符串。必须在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:
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)