zoukankan      html  css  js  c++  java
  • SQL Server分割字符串函数

    create  function F_split(
                    @s varchar(8000),          --包含多个数据项的字符串
                    @pos int,                 --要获取的数据项的位置
                    @split varchar(10)        --数据分隔符
    )RETURNS varchar(100)
    AS
    BEGIN
        IF @s IS NULL RETURN(NULL)
        DECLARE @splitlen int                --分隔符长度
        SELECT @splitlen=LEN(@split+'a')-2
        WHILE @pos>1 AND charindex(@split,@s+@split)>0
            SELECT @pos=@pos-1,
                @s=stuff(@s,1,charindex(@split,@s+@split)+@splitlen,'')
        RETURN(nullif(left(@s,charindex(@split,@s+@split)-1),''))
    END
    GO
     
    declare @s nvarchar(1000)
    set @s ='aa/bb/cc/dd/ee/ff' 
     
    select dbo.F_split(@s,1,'/'),dbo.F_split(@s,2,'/'),dbo.F_split(@s,3,'/')
     


    IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE SPECIFIC_NAME = N'Split' ) 
        DROP FUNCTION Split 
    GO 
     
     
    CREATE FUNCTION dbo.Split 
    (
    @ItemList VARCHAR(4000), 
    @delimiter VARCHAR(10)
    ) 
    RETURNS @IDTable TABLE (Item VARCHAR(50)) 
     
    AS
        BEGIN 
     
     
        WHILE CHARINDEX(@delimiter, @ItemList)>0
            BEGIN
                INSERT @IDTable SELECT LEFT(@ItemList,CHARINDEX(@delimiter,@ItemList)-1)
                SET @ItemList=STUFF(@ItemList,1,CHARINDEX(@delimiter,@ItemList),'')
            END
            INSERT @IDTable SELECT @ItemList
        RETURN
     
        END
    GO
     
    SELECT * FROM dbo.SPLIT('aaaa,bbb,ccc,eee',',')
    GO

    /*
    功能:实现split功能的函数
    */
     
    create function dbo.fn_split 
    (
    @inputstr varchar(8000), 
    @seprator varchar(10)
    )
    returns @temp table (a varchar(200))
    as 
     
    begin
    declare @i int
     
    set @inputstr = rtrim(ltrim(@inputstr))
    set @i = charindex(@seprator, @inputstr)
     
    while @i >= 1
    begin
    insert @temp values(left(@inputstr, @i - 1))
     
    set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
    set @i = charindex(@seprator, @inputstr)
    end
     
    if @inputstr <> '\'
    insert @temp values(@inputstr)
     
    return 
    end
    go
     
    --调用
     
    declare @s varchar(1000)
     
    set @s='1,2,3,4,5,6,7,8,55'
     
    select * from dbo.fn_split(@s,',')
     
    drop function dbo.fn_split 
  • 相关阅读:
    【转】shell中的内建命令, 函数和外部命令
    clear out all variables without closing terminal
    linux中shell命令test用法和举例
    解决vim粘贴时格式混乱的问题
    scp的两种方式
    source 命令的用法,是在当前bash环境下执行脚本文件
    angularjs中下拉框select option默认值
    redux 及 相关插件 项目实战
    JavaScript 获取当前时间戳
    v-if v-else-if v-else
  • 原文地址:https://www.cnblogs.com/railgunman/p/1905403.html
Copyright © 2011-2022 走看看