zoukankan      html  css  js  c++  java
  • SqlServe中分割字符串实现 类似split()功能

    数据库SQL中实现split功能
    如传入变量 '1,2,3,4'则可解析成1 2 3 4
    declare @string varchar(5000)
    declare @splitchar char(1)
    declare @l int -- 第一个分隔字符的位置
    declare @s int -- 第二个分隔字符的位置
    set @string ='1,2,3,4'
    set @splitchar=','
    set @l = 0 
    set @s = charindex(@splitchar@string@lwhile @l <= len(@string)
    begin
     
    declare @id nvarchar(50--被分割出来的值  
    --
     假如到最后一个字符串那么第二个分隔字符的位置就是这个字符串的长度加一
    if @s = 0 set @s = len(@string+ 1 
    set @id = substring(@string@l@s - @l-- 取值
     set @l = @s + 1
     
    set @s = charindex(@splitchar@string@l)  
    select @id 
    if ltrim(rtrim(@id)) <>'' continue -- 假如是空字符串就跳过  

    end

    下面是函数,
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go



    /*
    -------------------------------------------
    名称:f_ProdLib_splitSTR
    功能:拆分关键字
    编写人:
    时间:20060404
    -------------------------------------------
    */


    ALTER FUNCTION [dbo].[f_ProdLib_splitSTR](
    @s varchar(8000),   --要分拆的字符串
    @split varchar(10)  --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
    DECLARE @splitlen int
    SET @splitlen=LEN(@split+'a')-2
    WHILE CHARINDEX(@split,@s)>0
    BEGIN
    INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
    SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
    END
    INSERT @re VALUES(@s)
    RETURN
    END

    具体用例,还没有封装好,先贴着,等有时间再整
  • 相关阅读:
    Linux练习题
    我们普通大学生和国内一流大学的学生差距到底在哪里?
    Python修复图像文件后缀名
    Linux查找/扫描局域网打印机IP
    修改分区后的 Grub rescue
    Linux Matlab mex gcc 版本
    UFLDL新版教程
    Linux之时间、地点、人物、事件、情节
    GMchess Linux下的中国象棋游戏
    Linux 终端 忽略大小写
  • 原文地址:https://www.cnblogs.com/eflylab/p/1224635.html
Copyright © 2011-2022 走看看