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
  • 相关阅读:
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    FileUpload拦截器
    aspnet网页刷新
    查看SQL表的详细信息
    学习GDI+ (1)
    设计模式简单工厂模式
    对数据库表操作,统一的方法。
    随机产生300道四则运算
    略谈从计算机专业,再到软件构建的初识
    #在android studio中维护日程管理系统
  • 原文地址:https://www.cnblogs.com/goole/p/4903517.html
Copyright © 2011-2022 走看看