用函數處理字串(提取/比較)__函數

來源:互聯網
上載者:User

 --1、如果提取小寫字母:IF OBJECT_ID('roy_Number','fn') IS NOT NULLDROP FUNCTION roy_NumberGO                                           create function roy_Number(@name varchar(100))returns varchar(100)asbegin    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 @sendgo--測試:declare @s varchar(100)set @s='CHINA,r~!@#$o%^&*(y,&.;)(*wu^x%i943中8國$@人'select dbo.roy_Number(@s) as 顯示小寫字母/*顯示小寫字母                                                                                               ---------------------------------------------------------------------------------------------------- roywuxi(所影響的行數為 1 行)*/goIF OBJECT_ID('fn_Split','fn') IS NOT NULLDROP FUNCTION fn_StrGO                                           --2、找出第一個字串沒有在第二個字串出現的字元create function fn_Split(                    @s1 NVARCHAR(50),                    @s2 NVARCHAR(50),                    @split NVARCHAR(50)--分隔字元)returns nvarchar(50)asbegin       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 godeclare @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 [第一個字串沒有在第二個字串出現的字元]/*第一個字串沒有在第二個字串出現的字元                               -------------------------------------------------- rr(所影響的行數為 1 行)*/GO--3.計算相同的字元數IF OBJECT_ID('fn_Str','fn') IS NOT NULLDROP FUNCTION fn_StrGOCREATE FUNCTION fn_Str(@Str1 NVARCHAR(1000),@Str2 NVARCHAR(1000))RETURNS INTASBEGINDECLARE @i INT=0,@j INT=1,@k INT,@a INT,@Str3 NVARCHAR(1000)IF LEN(@Str1)<=LEN(@Str2)SELECT @k=LEN(@Str1),@Str3=@Str1ELSE SELECT @k=LEN(@Str2),@Str3=@Str2,@Str2=@Str1WHILE @j<=@kBEGINSET @a=CHARINDEX(SUBSTRING(@Str3,@j,1),@Str2)IF @a>0SELECT @Str1=STUFF(@Str1,@a,1,''),@i=@i+1SET @j=@j+1ENDRETURN @i    ENDGOSELECT dbo.fn_Str('asdf','1234a56') AS [相同的字元數]/*相同的字元數1*/


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.