1 declare @str nvarchar(50); 2 set @str='aa,32,22,55,7'; 3 select charindex(',',@str,1) as '第一個逗號的索引值' 4 select replace(replace(LEFT(@str,charindex(',',@str,1)-1),char(9),''),char(32),'') as '第一個值' 5 select SUBSTRING(@str,charindex(',',@str,1)+1,len(@str)) as '從第一逗號開始截取出後面的字符串'
截取字符串最長的字符串,用的是自定義函數函數
1 ALTER function [dbo].[fun_ecom_string] 2 ( 3 @str varchar(500),--傳入的字符串 4 @str2 varchar(50) --調用時候給空值,這個是用來保存最長字符串值的 5 ) 6 returns varchar(50) as 7 begin 8 declare @result varchar(50) 9 SET @str=replace(replace(@str,char(9),''),char(32),'') 10 SET @result=@str 11 --第一個逗號的索引值 12 if charindex(',',@str,1)=0 and len(@str2)=0 13 begin 14 SET @result=@str 15 end 16 else if charindex(',',@str,1)=0 and len(@str2)>0 17 begin 18 if len(@result)<len(@str2) 19 begin 20 SET @result=@str2 21 end 22 end 23 else 24 begin 25 SET @result=LEFT(@str,charindex(',',@str,1)-1) --第一個值 26 if len(@result)>len(@str2) 27 begin 28 SET @str2=@result 29 end 30 31 SET @str=SUBSTRING(@str,charindex(',',@str,1)+1,len(@str))--從第一逗號開始截取出後面的字符串 32 SET @result=dbo.fun_ecom_string(@str,@str2) 33 end 34 35 36 return @result 37 end
調用測試結果:測試
select [dbo].[fun_ecom_string] ('98997378119101444444444443,503180004665,503144444444800046651,18919173781191013','') --結果:98997378119101444444444443
取字符串 以逗號 隔開中 最長的字符串 而且字符串是數字型的
ALTER function [dbo].[fun_ecom_string] ( /* 取字符串 以逗號 隔開中 最長的字符串 而且字符串是數字型的 ISNUMERIC 判斷字符串是否爲數字 */ @str varchar(500),--傳入的字符串 @str2 varchar(50) --調用時候給空值,這個是用來保存最長字符串值的 ) returns varchar(50) as begin declare @result varchar(50) SET @str=replace(replace(@str,char(9),''),char(32),'') --SET @result=@str --第一個逗號的索引值 if charindex(',',@str,1)=0 and len(@str2)=0 begin SET @result=@str end else if charindex(',',@str,1)=0 and len(@str2)>0 begin if ISNUMERIC(@result)=0 begin SET @result=@str2 end else if ISNUMERIC(@result)=1 and len(@result)<len(@str2) begin SET @result=@str2 end end else begin SET @result=LEFT(@str,charindex(',',@str,1)-1) --第一個值 if len(@result)>len(@str2) and ISNUMERIC(@result)=1 --ISNUMERIC 判斷字符串是否爲數字 begin SET @str2=@result end SET @str=SUBSTRING(@str,charindex(',',@str,1)+1,len(@str))--從第一逗號開始截取出後面的字符串 SET @result=dbo.fun_ecom_string(@str,@str2) end return @result end