• 字符函数PATINDEX()与STUFF()


     函数 PATINDEX() STUFF() 取数字 英语 汉字

    更多:http://msdn.microsoft.com/zh-cn/library/ms188395.aspx

    PATINDEX()

    返回模式在指定表达式中第一次出现的起始位置;如果在所有有效的文本和字符数据类型中都找不到该模式,则返回零。

    语法:PATINDEX ( '%pattern%' , expression )

    STUFF()

    STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。

    语法 : STUFF ( character_expression , start , length , replaceWith_expression )

    取数字

    --创建
    CREATE FUNCTION dbo.f_GetNumber(@StringWithNumber VARCHAR(100))
    RETURNS VARCHAR(100)
    AS 
        BEGIN        
            WHILE PATINDEX('%[^0-9]%', @StringWithNumber) > 0 
                BEGIN 
                    SET @StringWithNumber = STUFF(@StringWithNumber,PATINDEX('%[^0-9]%',@StringWithNumber), 1,'');
                END
            RETURN @StringWithNumber
        END
    --测试,执行function的时候,dbo. 千万不能掉了  
    SELECT  dbo.f_GetNumber('asdf464568asdf')

    取字母

    --创建    
    CREATE FUNCTION dbo.Get_String ( @String VARCHAR(100) )
    RETURNS VARCHAR(100)
    AS 
        BEGIN
            WHILE PATINDEX('%[^a-z$]%', @String) > 0 
                BEGIN 
                    SET @String = STUFF(@String, PATINDEX('%[^a-z]%', @String), 1,'') ;
                END 
            RETURN @String
        END
    
    --测试
    SELECT  dbo.Get_String('asdf464568asdf')

    --取出中文

    --取出中文 
    IF OBJECT_ID('dbo.GetChineseFromString') IS NOT NULL 
        DROP FUNCTION dbo.GetChineseFromString 
    GO 
    CREATE FUNCTION dbo.GetChineseFromString ( @StringWithChinese NVARCHAR(100) )
    RETURNS NVARCHAR(100)
    AS 
        BEGIN 
            WHILE PATINDEX('%[^吖-座]%', @StringWithChinese) > 0 
                SET @StringWithChinese = STUFF(@StringWithChinese, PATINDEX('%[^吖-座]%', @StringWithChinese), 1, N''); 
            RETURN @StringWithChinese 
        END
    go 
    SELECT dbo.GetChineseFromString('asda54615哈哈笑死我了asdfsadf56564!!!')

     

  • 相关阅读:
    SQL WHERE 子句:语法及案例剖析
    SQL SELECT DISTINCT 语句:语法及案例剖析
    SQL SELECT 语句:语法与案例剖析
    SQL 语法:一些最重要的 SQL 命令简介
    SQL 简介:什么是SQL,SQL能做什么
    mybatis 注解开发
    mybatis 缓存
    mybatis 延迟加载策略
    mybatis的多表查询
    mybatis 的动态 SQL 语句
  • 原文地址:https://www.cnblogs.com/Jolinson/p/3477003.html
Copyright © 2020-2023  润新知