sql 截取字符串与 截取字符串最长的字符串
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