• sql server筛选所有汉字、字母、数字


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

    %[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
  • 相关阅读:
    app后端session共享问题
    nignx
    dubbo
    lucene&solr-day1
    SSM框架整合,以CRM为例子
    SpringMVC入门第二天
    HBase集群搭建
    SecureCRT的Home+End+Del键映射
    记一次让人的喷血的排错经历
    基于docker搭建mysql集群
  • 原文地址:https://www.cnblogs.com/gered/p/12779299.html
Copyright © 2020-2023  润新知