请教下,SQL取两个字符之间的数据

图片说明
我想取这个区间的数据, 就是第4个-(横杠)和第5个-(横杠)之间的数据,SQL Server中应该怎么写,然后取出来,加上后面两个字段,相同的数据只取第一条, 谢谢了

with
test(col) as
(select '206444-224821-6398873-17662358-2383908-1-6398973' from dual union all
select '136444-224521-6393473-17662358-2356908-2-6394573' from dual union all
select '266444-224898-6124573-13462358-2983908-3-6098973' from dual)
select distinct col,substr(col,instr(col,'-',1,4)+1,instr(col,'-',1,5)-instr(col,'-',1,4)-1) from test;

206444-224821-6398873-17662358-2383908-1-6398973     2383908
136444-224521-6393473-17662358-2356908-2-6394573     2356908
266444-224898-6124573-13462358-2983908-3-6098973     2983908

方法很多
1、用字符串截取charindex
2、表循环截取,需要数字基表
3、如果长多固定,建议可以直接根据固定数字截取

如果是labview与SQL相结合 labview强大的字符处理功能,完全可以处理

select (SUBSTRING(Extension,31,7)+DoctorID+ CONVERT(varchar,DateRequire,102)) as strinfo from 表名
去重自己弄下