zoukankan      html  css  js  c++  java
  • 字符函数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!!!')

     

  • 相关阅读:
    LeetCode-018-四数之和
    LeetCode-017-电话号码的字母组合
    LeetCode-016-最接近的三数之和
    LeetCode-015-三数之和
    LeetCode-014-最长公共前缀
    LeetCode-013-罗马数字转整数
    LeetCode-012-整数转罗马数字
    LeetCode-011-盛最多水的容器
    LeetCode-010-正则表达式匹配
    [leetcode]103. Binary Tree Zigzag Level Order Traversal二叉树Z形遍历
  • 原文地址:https://www.cnblogs.com/Jolinson/p/3477003.html
Copyright © 2011-2022 走看看