zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    English,The Da Vinci Code, Chapter 23
    python,meatobject
    English,The Da Vinci Code, Chapter 22
    English,The Da Vinci Code, Chapter 21
    English,The Da Vinci Code, Chapter 20
    English,The Da Vinci Code, Chapter 19
    python,xml,ELement Tree
    English,The Da Vinci Code, Chapter 18
    English,The Da Vinci Code, Chapter 17
    English,The Da Vinci Code, Chapter 16
  • 原文地址:https://www.cnblogs.com/goole/p/4903517.html
Copyright © 2011-2022 走看看