zoukankan      html  css  js  c++  java
  • 【SQLSERVER】如何找出字符串中的数字

    可以通过写自定义函数实现,以下提供两种思路来解决:

    1、通过正则匹配,找到字符串中的数字,一个一个拼起来

    /*方法一: 一个一个找出来*/
    CREATE FUNCTION [dbo].[Fun_GetNumPart] 
    ( @Str NVARCHAR(MAX) )
    RETURNS NVARCHAR(MAX)
    AS
        BEGIN
            DECLARE @Start INT;
            DECLARE @End INT; 
            DECLARE @Part NVARCHAR(MAX)
            SET @Start = PATINDEX('%[0-9]%', @Str);
            SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));
            SET @Part = SUBSTRING(@Str,@Start,1) 
            WHILE  @End >0 
            BEGIN 
                    SET @Start = @start+@End
                    SET @Part = @Part+SUBSTRING(@Str,@Start,1)       
                    SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start)); 
            END
                
            RETURN  @Part;
        END;

    2、通过正则逆向匹配,找到字符串中的非数字,一个一个去掉

    /*方法二:一个一个去掉*/
    CREATE FUNCTION [dbo].[Fun_GetNumPart]  
    ( @Str NVARCHAR(MAX) ) 
    RETURNS NVARCHAR(MAX)   
    AS   
    BEGIN   
        WHILE PATINDEX('%[^0-9]%',@Str)>0   
        BEGIN   
            SET @Str=STUFF(@Str,PATINDEX('%[^0-9]%',@Str),1,'') --删掉非数字的字符
        END   
        RETURN @Str 
    END   

    效果如下图:

    延伸:

    可以通过将函数中的 '%[0-9]%' 替换成 '%[A-Z]%'、'%[吖-做]%',,改造成找字母、找中文的函数

  • 相关阅读:
    spring事件广播
    浏览器中文乱码,组合项目中部分模块乱码
    SpringSecurity加密Salt
    Linux服务器Java输出文件中文乱码
    重定向监听端口并持久化路由配置
    Mac下文件编码转换
    Shell之内容匹配与格式输出
    [leetcode]Scramble String
    [leetcode]Decode Ways
    [leetcode]Valid Palindrome
  • 原文地址:https://www.cnblogs.com/TurboWay/p/7239046.html
Copyright © 2011-2022 走看看