ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL按指定符号分割字符串函数

2019-04-27 09:48:31  阅读:1479  来源: 互联网

标签:分割 set varchar int charindex split str SQL 字符串


一、SQL分割字符串,返回临时表

方法一:

 1 create function [dbo].[f_split]
 2 (
 3     @c varchar(2000),--需要分割的字符串(例如:1,2,3,4,5    我|和|你)
 4     @split varchar(2)--分隔符(例如 ,  |  $)
 5 )
 6 returns @t table(col varchar(200))--返回表
 7 as
 8     begin
 9         while(charindex(@split,@c)<>0)
10         begin
11             insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
12             set @c = stuff(@c,1,charindex(@split,@c),'')
13         end
14         insert @t(col) values (@c)
15         return
16     end

方法二:

 1 create function [dbo].[f_split]
 2 (
 3     @str varchar(2000),--需要分割的字符串(例如:1,2,3,4,5    我|和|你)
 4     @spliter varchar(2)--分隔符(例如 ,  |  $)
 5 )
 6 returns @tb table(ch varchar(200))--返回表
 7 as
 8     begin
 9         declare @num int,@pos int, @nextpos int
10         set @num = 0
11         set @pos = 1
12         while(@pos <= LEN(@str))
13             begin
14             select @nextpos = CHARINDEX(@spliter, @str, @pos)
15             if(@nextpos = 0 or @nextpos is null)
16             select @nextpos = LEN(@str) + 1
17             insert into @tb values(RTRIM(LTRIM(SUBSTRING(@str, @pos, @nextpos - @pos))))
18             select @pos = @nextpos+1
19             end
20         return
21     end

二、SQL分割字符串,返回元素个数

create function f_GetArrayLength
(
    @str varchar(2000),--需要分割的字符串(例如:1,2,3,4,5    我|和|你)
    @split varchar(2)--分隔符(例如 ,  |  $)
)
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

标签:分割,set,varchar,int,charindex,split,str,SQL,字符串
来源: https://www.cnblogs.com/zhipeng007/p/10777728.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有