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]%'、'%[吖-做]%',,改造成找字母、找中文的函数

  • 相关阅读:
    Java总结篇系列:Java多线程(一)
    path方法总结
    Ember模板中的操作指向
    EmberJS路由详解
    观察器observes与对象初始化
    emberjs重写补充类之reopen方法和reopenClass方法
    emberjs创建类
    2014Ember带来怎样的变化?
    创建应用和模型和控制器
    自定义指令
  • 原文地址:https://www.cnblogs.com/TurboWay/p/7239046.html
Copyright © 2011-2022 走看看