zoukankan      html  css  js  c++  java
  • 用函数处理字符串(提取/比较)


    --1、如果提取小写字母:

    create function roy_Number(@name varchar(100))
    returns varchar(100)
    as
    begin

        
    declare @s varchar(100)

        
    while patindex('%[a-z]%',@name collate Chinese_PRC_BIN)>0--用二进制排序区分大小写

            
    begin

                
    set @s=isnull(@s,'')+substring(@name,patindex('%[a-z]%',@name collate Chinese_PRC_BIN),1)

                
    set @name=stuff(@name,1,patindex('%[a-z]%',@name collate Chinese_PRC_BIN),'')

            
    end

        
    return @s
    end

    go

    --测试:

    declare @s varchar(100)

    set @s='CHINA,r~!@#$o%^&*(y,&.;)(*wu^x%i943中8国$@人'

    select dbo.roy_Number(@sas 显示小写字母


    /*
    显示小写字母                                                                                               
    ---------------------------------------------------------------------------------------------------- 
    roywuxi

    (所影响的行数为 1 行)

    */


    --drop function roy_Number


                                               

    go

    --2、找出第一个字符串没有在第二个字符串出现的字符

    create function fn_Split(

                        @s1nvarchar(50),

                        @s2nvarchar(50),

                        @splitnvarchar(50)--分隔符

    )

    returns nvarchar(50)

    as

    begin

       

        declare @s3 nvarchar(50),@lenSplit int

       

        select @s3='',@s1=@s1+@split,@s2=@split+@s2+@split,@lenSplit=len(@split+'a')-2

       

        while charindex(@split,@s1)>0

       

            begin

       

                if charindex(@split+left(@s1,charindex(@split,@s1)+@lenSplit),@s2)=0

       

                    set@s3=@s3+left(@s1,charindex(@split,@s1)+@lenSplit)

       

                set@s1=stuff(@s1,1,charindex(@split,@s1)+@lenSplit,'')

            end

        IF @s3>''

           return left(@s3,len(@s3)-1)

        RETURN @s3

     

    end

     

    go

    declare @s1 nvarchar(50),@s2 nvarchar(50)

     

    select @s1='u,a,b,c,d,e,f',@s2='c,b,d,rr'

     

    select dbo.fn_Split(@s2,@s1,',') as [第一个字符串没有在第二个字符串出现的字符]



    /*

    第一个字符串没有在第二个字符串出现的字符                               
    -------------------------------------------------- 
    u,a,e,f

    (所影响的行数为 1 行)


    */


    --drop function fn_Split
  • 相关阅读:
    剑指 Offer 41. 数据流中的中位数
    剑指 Offer 19. 正则表达式匹配
    leetcode 75 颜色分类
    Deepin 添加 open as root
    window 下 无损进行其他文件系统(ext4) 到 ntfs 文件系统的转化
    Windows Teminal Preview Settings
    CentOS 7 容器内替换 apt-get 源为阿里源
    Ubuntu 20.04 安装 Consul
    elementary os 15 添加Open folder as root
    elementary os 15 gitbook install
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463121.html
Copyright © 2011-2022 走看看