在字符串中的字符“ _”之后提取字符

时间:2018-12-03 17:01:32

标签: sql string

我在长度可变的sql server中有以下字符串

Declare @string Varchar(max) = 'abjrc_chdc_hyku_abv_ytr_DCD_HTR_TBF'

如何选择该字符串中第四个'_'之后的字符? (预期结果:ytr_DCD_HTR_TBF)

还如何仅选择字符串的第4部分(结果:abv)

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:0)

如果您随时确切知道字符串中有多少个字符,则可以使用SUBSTRING,这样就可以调用第一个字符串

Declare @string Varchar(max) = 'abjrc_chdc_hyku_abv_ytr_DCD_HTR_TBF';
Declare @last4 Varchar(max) = SELECT SUBSTRING(@string, 21, 35);
Declare @before4 Varchar(max) = SELECT SUBSTRING(@string, 17, 19);

如果您确实需要为每个'_'分割字符串,那么您也可以使用this 希望我能帮上忙。

答案 1 :(得分:0)

如果您将其用于多行创建功能会更好。我已经为您的两个问题准备了样品:

Declare @string Varchar(max) = 'abjrc_chdc_hyku_abv_ytr_DCD_HTR_TBF'
Declare @NewString Varchar(max) = @string
Declare @Find4thPart Varchar(max) =''

DECLARE @Sep    VARCHAR(10)='_'
DECLARE @Pos    INT=4

WHILE @Pos>0
BEGIN
SET @NewString = SUBSTRING(@NewString, CHARINDEX(@Sep,@NewString)+1,100)

IF @Pos=2
SET @Find4thPart = SUBSTRING(@NewString,1, CHARINDEX(@Sep,@NewString)-1)

SET @Pos=@Pos-1
--SELECT @NewString 
END

seLECT @NewString ,@Find4thPart