首页 > 解决方案 > SQL Server:'-'连字符的特定位置的子字符串

问题描述

我需要在 SQL Server 中执行子字符串操作并从连字符 (-) 开始获取字符串。

我的输入字符串是:

'44345434595-E535-12349-5273-202003-16785'

我想从第 4 个连字符实例中提取字符串到第 5 个连字符实例,我想要的结果是:202003

标签: sqlsql-server

解决方案


您可以string_splitsqlserver

declare @str varchar(max)= '44345434595-E535-12349-5273-202003-16785'

select * from (select value, row_number() over (order by charindex('-' + value + '-', '-' + @str + '-')) rn
    from string_split(@str, '-')) t1
where t1.rn in (5)

由于无法保证ordering使用string_split功能,我们需要position根据您的排序-

row_number() over (order by charindex('-' + value + '-', '-' + @str + '-')) 

推荐阅读