我在长度可变的sql server中有以下字符串
Declare @string Varchar(max) = 'abjrc_chdc_hyku_abv_ytr_DCD_HTR_TBF'
如何选择该字符串中第四个'_'之后的字符? (预期结果:ytr_DCD_HTR_TBF)
还如何仅选择字符串的第4部分(结果:abv)
有什么想法吗?
谢谢
答案 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