zoukankan      html  css  js  c++  java
  • Sql得到(去除)字符串中所有汉字,字母,数字的函数

    核心思想在于下面几个模式的组合使用:

    %[0-9]%              所有数字

    %[A-Za-z]%:所有字母

    %[-]%:所有汉字

    1. 去除汉字(字母、数字):

    举出一例,其他类似:

        CREATE FUNCTION f_RemoveChinese  
        (  
            @str VARCHAR(500)  
        )  
        RETURNS VARCHAR(500)  
        AS  
        BEGIN  
         --  '%[0-9]%'            所有數字  
         --  '%[A-Za-z]%'         所有字母  
         --  '%[A-Za-z0-9]%'      所有數字與字母  
         --   ....                組合使用,依此類推  
            WHILE PATINDEX('%[吖-咗]%',@str) > 0   
                SET @str = STUFF(@str,PATINDEX('%[吖-咗]%',@str),1,'')  
              
            RETURN @str  
        END  
        GO  
          
        SELECT dbo.f_RemoveChinese('愛@@情123騙子我問@@你')  -- @@123@@  

    2. 提取汉字(字母、数字):

    提取XX可转化为去除非XX 举出一例,其他类似

        CREATE FUNCTION f_getChinese  
        (  
           @str VARCHAR(500)  
        )  
        RETURNS VARCHAR(500)  
        AS  
        BEGIN  
         --  '%[^0-9]%'            所有數字  
         --  '%[^A-Za-z]%'         所有字母  
         --  '%[^A-Za-z0-9]%'      所有數字與字母  
         --   ....                組合使用,依此類推  
            WHILE PATINDEX('%[^吖-咗]%',@str) > 0   
                SET @str = STUFF(@str,PATINDEX('%[^吖-咗]%',@str),1,'')  
          
            RETURN @str  
        END  
        GO  
          
        SELECT dbo.f_getChinese('愛@@情123騙子我問@@你')  -- 愛情騙子我問你  


    3. 提取数字(支持小数点):

    上面的代码将模式直接换成'%[^0-9]%'的话,不支持带小数点的数字,下面给出一个修正的:


        -- 提取所有漢字(字母、數字)  
        CREATE FUNCTION f_GetNum  
        (  
            @str VARCHAR(500)  
        )  
        RETURNS VARCHAR(500)  
        AS  
        BEGIN  
            -- get num and dot  
            WHILE (PATINDEX('%[^0-9.]%',@str) > 0)  
                SET @str = STUFF(@str,PATINDEX('%[^0-9.]%',@str),1,'')  
                  
            -- remove left dot  
            WHILE(LEFT(@str,1)='.')  
                SET @str = RIGHT(@str,LEN(@str)-1)  
                  
            -- remove right dot  
            WHILE(RIGHT(@str,1)='.')  
                SET @str = LEFT(@str,LEN(@str)-1)  
                  
            RETURN @str  
        END  
        GO  
          
        SELECT dbo.f_GetNum('愛@@..情1.23騙子我問...@@你')  -- 1.23  

  • 相关阅读:
    尾递归
    gcc/g++ 命令
    GCC输出带C源代码的汇编文件
    linux下Ctrl命令组合
    静态链接库(lib)、动态链接库(dll)与动态链接库的导入库(lib)
    VS2010-MFC(菜单:菜单及CMenu类的使用)
    VS2010-MFC(菜单:VS2010菜单资源详解)
    VS2010-MFC(常用控件:标签控件Tab Control 下)
    VS2010-MFC(常用控件:标签控件Tab Control 上)
    VS2010-MFC(常用控件:树形控件Tree Control 下)
  • 原文地址:https://www.cnblogs.com/ful1021/p/4804390.html
Copyright © 2011-2022 走看看