我有一个返回值为 xxx-xxx-xxx-xxxxx-xx-x 的字段。我如何从该代码中提取第 10 个字符。
使用
substring
功能
选择子字符串('xxx-xxx-xax-xxxxx-xx-x', 10, 1)
declare @x varchar(20) = 'xxx-xxx-xxx-xxxxx-xx-x'
select SUBSTRING(@x,10,CHARINDEX('-',@x)-4 )
以下代码将返回分隔后的第 n 个子字符串,无论是从左还是从右;在特定示例中,分隔符是逗号,它正在寻找第二个段,从右数
declare
@str_orig VARCHAR(256)='123,345,8,6,7',
@delimit varchar(50) =',',
@loc int =2,
@from_left bit =0
SELECT value, row_number() over( order by( select 1)) as row_num
into #split
FROM STRING_SPLIT(@str_orig, @delimit)
declare @result varchar(256)
if @from_left=1
begin
set @result = ( select top 1 value from #split where row_num=@loc)
end
else
begin
set @result = ( select top 1 value from #split
where row_num= (SELECT MAX(ROw_num) -(@loc-1) FROM #split)
)
end
select @result