zoukankan      html  css  js  c++  java
  • 取出字符串中的汉字、字母或是数字

    Go

    --创建函数(得到字符串中的汉字)

    create function [dbo].[m_getchinese]

    (

        @chinese nvarchar(max)

    )

    returns varchar(100)

    as

    begin

        while patindex('%[^吖-咗]%',@chinese) > 0

        begin

           set @chinese = stuff(@chinese,patindex('%[^吖-咗]%',@chinese),1,N'');

        end

        return @chinese

    end

    go

    --创建函数(得到字符串中的字母)

    create function [dbo].[m_getstr](@maco varchar(100))

    returns varchar(max)

    as

    begin

        while patindex('%[^a-z]%',@maco) > 0

           begin

               set @maco=stuff(@maco,patindex('%[^a-z]%',@maco),1,'')

           end

        return @maco

    end

    go

    --创建函数(得到字符串中的数字)

    create function [dbo].[m_getnumber]

    (

       @mysql_one nvarchar(200)

    )

    returns varchar(200)

    begin

        declare @mysql_two varchar(200)

        select @mysql_two=

        substring(@mysql_one,patindex('%[0-9.]%',@mysql_one),patindex('%[^0-9.]%',substring(@mysql_one,patindex('%[0-9.]%',@mysql_one),

        len(@mysql_one)-patindex('%[0-9.]%',@mysql_one)+1))-1)

        return @mysql_two;

    end

     

    --测试

    select dbo.[m_getchinese]('China2009中国HRB4-1v')

    select dbo.[m_getstr]('China2009中国HRB4-1v')

    select dbo.[m_getnumber]('China2009中国HRB4-1v')

     

    --运行结果

    /*

    -----------

    中国

    -----------

    ChinaHRBv

    -----------

    2009

    */

     

    --说明一下

    --上面这个取数字是可以取浮点型的

    select dbo.[m_getnumber] ('字段.456A(AA)A')--正常

    select dbo.[m_getnumber] ('CHinese2.1day')--正常

    select dbo.[m_getnumber] ('Name5.01From')--正常

    select dbo.[m_getnumber] ('9898Address')--正常

    select dbo.[m_getnumber] ('aaaaaForm2.3333')--错误

     

    --修正函数

    go

    /* 取出字符串中间的数字(第二版)*/

    create function [dbo].[m_getnumberV2.0]

    (

           @mysql_one nvarchar(200)

    )

    returns varchar(200)

    begin

        declare @mysql_two varchar(200)

        declare @sql_one int

        declare @sql_two int

        select @sql_one= patindex('%[0-9.]%',@mysql_one)

        select @sql_two=

        patindex('%[^0-9.]%',

        substring(@mysql_one,patindex('%[0-9.]%',@mysql_one),len(@mysql_one)-patindex('%[0-9.]%',@mysql_one)+1))

        if @sql_two=0

           begin

               select @mysql_two= substring (@mysql_one,@sql_one,len(@mysql_one)+1-@sql_one)

           end

        else

           begin

               select @mysql_two=substring (@mysql_one,@sql_one,@sql_two-1)

           end

        return @mysql_two;

    end

     

    --测试示例

    select dbo.[m_getnumberV2.0] ('字段.456A(AA)A')--正常

    select dbo.[m_getnumberV2.0] ('CHinese2.1day')--正常

    select dbo.[m_getnumberV2.0] ('Name5.01From')--正常

    select dbo.[m_getnumberV2.0] ('9898Address')--正常

    select dbo.[m_getnumberV2.0] ('aaaaaForm2.3333')--正常

  • 相关阅读:
    家庭网关
    linux -jdk 安装
    linux 常见命令--系统信息部分
    pyglet--EventLoop对象(主事件循环,用于从系统消息队列中取出消息,并派发给各个窗口)
    ATL com的dll文件与tlb文件
    MFC实现COM组件
    如何定义一个接口(接口Interface只在COM组件中定义了,MFC和C++都没有接口的概念)
    关于DLL调试的两个工具(dependency walker和dumpbin.exe)
    MFC工程名称与所包含文件名称的关系(工程名可以更改,输出的.dll.exe.lib都以最后工程名命名为准)
    关于c++中命名空间namespace
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244461.html
Copyright © 2011-2022 走看看