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

    具体用例,还没有封装好,先贴着,等有时间再整
  • 相关阅读:
    第八次作业-非确定的自动机NFA确定化为DFA
    正规式到正规文法与自动机
    正则表达式基本介绍
    博客园源码不可copy的解决办法
    爬取湖北师范大学招生信息网中的专业简介
    利用爬虫爬取LOL官网上皮肤图片
    利用python的requests和BeautifulSoup库爬取小说网站内容
    python图像处理之PIL库
    Python之文件的使用
    python入门之jieba库的使用
  • 原文地址:https://www.cnblogs.com/eflylab/p/1224635.html
Copyright © 2011-2022 走看看