如何在SQL中提取字符串中的第n个字符

问题描述 投票:0回答:5

我有一个返回值为 xxx-xxx-xxx-xxxxx-xx-x 的字段。我如何从该代码中提取第 10 个字符。

sql sql-server sql-server-2008
5个回答
28
投票
select substring('xxx-xxx-xxx-xxxxx-xx-x', 10, 1)

MSDN 上该函数的文档位于此处

SQL Fiddle 演示位于此处(具有不同的字母,以便您可以清楚地看到提取了哪个字母)。


6
投票

使用

substring
功能

选择子字符串('xxx-xxx-xax-xxxxx-xx-x', 10, 1)


5
投票

您可以使用

SUBSTRING
,根据您的情况使用...

SELECT SUBSTRING(field, 10, 1) 

field 是返回值的字段。


0
投票
declare @x varchar(20) = 'xxx-xxx-xxx-xxxxx-xx-x'

select SUBSTRING(@x,10,CHARINDEX('-',@x)-4 )

0
投票

以下代码将返回分隔后的第 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
© www.soinside.com 2019 - 2024. All rights reserved.