精华内容
下载资源
问答
  • sql分割字符串

    千次阅读 2014-08-02 07:09:35
    sql分割字符串,sql拆分字符串

    create function [dbo].[fn_Split]
     (
     @SourceSql nvarchar(max),--源分隔字符串
     @StrSeprate varchar(10)--分隔符
     )
     returns @temp table(a nvarchar(max))
     as
    begin
         declare @i int
         set @SourceSql=rtrim(ltrim(@SourceSql))
         set @i=charindex(@StrSeprate,@SourceSql)
         while @i>=1
         begin
             insert @temp values(left(@SourceSql,@i-1))
             set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
             set @i=charindex(@StrSeprate,@SourceSql)
         end
         if @SourceSql<>'\'
            insert @temp values(@SourceSql)
         return
    end
    go

    展开全文
  • sql 分割字符串

    2018-11-21 11:52:46
    @in_source nvarchar(4000), -- 被分割字符串 @in_delimiter nvarchar(10) -- 分割符 ) returns @temp table(seq int identity, value nvarchar(100)) as begin declare @i int, @len i...
    create function dbo.fn_split(
    	@in_source 	nvarchar(4000), -- 被分割字符串
    	@in_delimiter 	nvarchar(10)	-- 分割符
    )
    returns @temp table(seq int identity, value nvarchar(100))
    as 
    begin
    	declare @i int, @len int
    	set @in_source = ltrim(@in_source)
    	set @i = charindex(@in_delimiter, @in_source)
    	set @len = len(@in_delimiter)
    	while @i > = 1
    	begin
    		insert @temp values( ltrim((left(@in_source, @i - 1))) )
    		set @in_source = substring(@in_source, @i + @len, len(@in_source) - @i)
    		set @i = charindex(@in_delimiter, @in_source)
    	end
    	if @in_source <> '\'
    		insert @temp values( ltrim(@in_source))
    	return 
    end

    使用

    select * from dbo.fn_split('test1,test2,test3',',')

    结果

    展开全文
  • SQL分割字符串

    2014-05-12 09:11:07
    看到程序一分割字符串函数,感觉有点迷惑,于是自己想从百度里面搜索几个一幕了然的分割字符串函数如程序二里面的一些方法 程序一:create function [dbo].[GF_StringSplit] (@str nvarchar(max), --字符串 @...

    看到程序一分割字符串函数,感觉有点迷惑,于是自己想从百度里面搜索几个一幕了然的分割字符串函数如程序二里面的一些方法

    程序一:create function [dbo].[GF_StringSplit]
    (@str nvarchar(max), --字符串
    @spliter nvarchar(10)) --分割符

    returns @tb table(ch nvarchar(256))  --返回对应表

    AS

    BEGIN

    DECLARE @Num int,@Pos int, @NextPos int

    SET @Num = 0

    SET @Pos = 1

    WHILE(@Pos <= LEN(@str))

    BEGIN

    SELECT @NextPos = CHARINDEX(@spliter, @str, @Pos)

    IF (@NextPos = 0 OR @NextPos IS NULL)

    SELECT @NextPos = LEN(@str) + 1

    INSERT INTO @tb VALUES(RTRIM(LTRIM(SUBSTRING(@str, @Pos, @NextPos - @Pos))))

    SELECT @Pos = @NextPos+1

    END

    return

    END

    程序二:

    T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。
    一,用临时表作为数组
    create   function   f_split(@c   varchar(2000),@split   varchar(2))   
    returns   @t   table(col   varchar(20))   
    as   
        begin   
        
          while(charindex(@split,@c)<>0)   
            begin   
              insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))   
              set   @c   =   stuff(@c,1,charindex(@split,@c),'')   
            end   
          insert   @t(col)   values   (@c)   
          return   
        end   
    go   
        
    select   *   from   dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')   
        
    drop   function   f_split 
    col                                       
    --------------------     
    dfkd   
    dfdkdf   
    dfdkf   
    dffjk   
        
    (所影响的行数为   4   行)

    二、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
    CREATE function Get_StrArrayLength
    (
    @str varchar(1024), --要分割的字符串
    @split varchar(10) --分隔符号
    )
    returns int
    as
    begin
    declare @location int
    declare @start int
    declare @length int

    set @str=ltrim(rtrim(@str))
    set @location=charindex(@split,@str)
    set @length=1
    while @location<>0
    begin
       set @start=@location+1
       set @location=charindex(@split,@str,@start)
       set @length=@length+1
    end
    return @length
    end
    调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')
    返回值:4

    三、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
    CREATE function Get_StrArrayStrOfIndex
    (
    @str varchar(1024), --要分割的字符串
    @split varchar(10), --分隔符号
    @index int --取第几个元素
    )
    returns varchar(1024)
    as
    begin
    declare @location int
    declare @start int
    declare @next int
    declare @seed int

    set @str=ltrim(rtrim(@str))
    set @start=1
    set @next=1
    set @seed=len(@split)

    set @location=charindex(@split,@str)
    while @location<>0 and @index>@next
    begin
       set @start=@location+@seed
       set @location=charindex(@split,@str,@start)
       set @next=@next+1
    end
    if @location =0 select @location =len(@str)+1 
    --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。

    return substring(@str,@start,@location-@start)
    end
    调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
    返回值:9

    三、结合上边两个函数,象数组一样遍历字符串中的元素

    declare @str varchar(50)
    set @str='1,2,3,4,5'
    declare @next int 
    set @next=1
    while @next<=dbo.Get_StrArrayLength(@str,',')
    begin
    print dbo.Get_StrArrayStrOfIndex(@str,',',@next)
    set @next=@next+1
    end

    调用结果:
    1
    2
    3
    4

    //-------------------------------------------------------------------------------------------------------------------------
    select f1,f2,f3,left(A,charindex('_',A)-1)
    from 表名 
    order by left(A,charindex('_',A)-1)

    展开全文
  • Sql 分割字符串

    2015-07-09 18:11:49
    /* 分割符为',' */ declare @depid varchar(100) declare @location int ...--示例字符串 set @depid = '13434,32,34,567,12,9998,' set @location = 1 set @length = 0 while @location <> 0 begin set
    /*
    	分割符为',' 
    */
    declare @depid varchar(100)
    declare @location int
    declare @length int
    --示例字符串
    set @depid = '13434,32,34,567,12,9998,'
    set @location = 1
    set @length = 0
    while @location <> 0
    begin
    	set @location = charindex(',', @depid, @location)
    	if @location = 0 
    	begin
    		break;
    	end
    	else 
    	begin
    		--print @location
    		--print @length
    		print SUBSTRING(@depid,@location - (@location - 1 - @length),@location - 1 - @length)
    		set @location = @location + 1
    		set @length = (@location - 1)
    	end
    end 


    运行结果

    13434
    32
    34
    567
    12
    9998

    展开全文
  • SQL分割字符串,SQL按照指定字符分割字符串,SQL处理字符串 -----原文来源于网络 T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历...
  • -- 截取字符串函数: -- SUBSTRING_INDEX(str, delim, count) -- str: 要处理的字符串。 -- delim: 分割符,将str分割成两部分。 -- count: 计数(使用第几个分隔符)。 如果为正数,则从左开始数,返回分割后左边...
  • SQL 分割字符串

    2013-12-19 09:41:00
    set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) set @i=charindex(@StrSeprate,@SourceSql) end if @SourceSql<>'' insert @temp values(@SourceSql) return end GO 调用方法 select ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,512
精华内容 604
关键字:

sql分割字符串