• (转)在SQL中取出字符串中数字部分或在SQL中取出字符部分


    近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索。并结合自己项目的需求,编写了一个自定义的SQL函数用供项目中使用。

    /****** Object:  UserDefinedFunction [dbo].[F_Get_No]    Script Date: 10/18/2013 22:03:13 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    
    create  function [dbo].[F_Get_No] 
    ( 
    @No varchar(100) 
    ) 
    RETURNS bigint 
    AS 
    BEGIN 
    WHILE PATINDEX('%[^0-9]%',@No)>0 
    BEGIN 
    SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'') --删掉一个非数字的字符,循环结束,剩余的为数字部分
    END 
    RETURN CONVERT(bigint,@No) 
    END
    View Code

    项目中的问题解决后,反过来思考了一下如果只取出字串中的字符部分,又如何处理呢。经过修改,修改如下,生成另一个SQL自定义函数。

    create  function [dbo].[F_GetChar]
    
    (
    
    @No varchar(100)
    
    )
    
    RETURNS varchar(100)
    
    AS
    
    BEGIN
    
    WHILE PATINDEX('%[^A-Za-z]%',@No)>0
    
    BEGIN
    
    SET @No=STUFF(@No,PATINDEX('%[^A-Za-z]%',@No),1,'') --删掉一个非数字的字符,循环结束,剩余的为数字部分
    
    END
    
    RETURN CONVERT(varchar(100),@No)
    
    END
    
     
    
    --select dbo.F_GetChar('wwww23')
    View Code

    以上调用自定义函数时都必须前面带dbo.

  • 相关阅读:
    spring boot @value 使用
    mac Navicat premium 链接oracle
    List sort 排序
    mac 配置jdk+maven环境变量
    mybatis 根据主键批量insert或update
    git 常用命令
    SpringBoot整合Activiti案例
    Activiti网关-并行网关
    Activiti网关-包含网关
    Activiti网关-排他网关
  • 原文地址:https://www.cnblogs.com/ywcz060/p/3469358.html
Copyright © 2020-2023  润新知