SQL操作——根据分隔符截取字符串
2009-09-08 09:52:59 阅读558 评论0    字号:⼤中⼩
⽰例:
传⼊多个Email地址,通过每个Email地址间的','分隔符,将各Email地址分开。
SELECT * FROM dbo.uf_Split('aa@aa,bb@bb,cc@cc,dd@dd',',');
查询结果:
subid      autoid
aa@aa 1
bb@bb 2
字符串截取 sql
cc@cc 3
dd@dd 4
下⾯是[uf_Split]⽅法的具体实现:
CREATE  FUNCTION [dbo].[uf_Split](@str VARCHAR(max),@splitchar CHAR(1))
RETURNS  @t TABLE(subid VARCHAR(1000),autoid INT) AS
/*
subject:split函数(⽬前只能对单个字符进⾏分割,不能以词组⽅式分割)
author:kq zhou
create date:2009-4-1
*/
BEGIN
DECLARE @substr VARCHAR(max)
SET @substr=@str
DECLARE @i INT,@j INT
SET @j=LEN(REPLACE(@str,@splitchar,REPLICATE(@splitchar,2)))-LEN(@str)--获取分割符个数
IF @j=0
BEGIN
INSERT INTO @t VALUES (@substr,1) --没有分割符则插⼊整个字串
END
ELSE
BEGIN
SET @i=0
DECLARE @m int
WHILE @i<=@j
BEGIN
IF(@i<@j)
BEGIN
SET @m=CHARINDEX(@splitchar,@substr)-1 --获取分割符的前⼀位置
INSERT INTO @t VALUES(LEFT(@substr,@m),@i+1)
SET @substr=RIGHT(@substr,LEN(@substr)-(@m+1)) --去除已获取的分割串,得到还需要继续分割的字符串  END
ELSE
BEGIN
INSERT INTO @t VALUES(@substr,@i+1)--对最后⼀个被分割的串进⾏单独处理
END
SET @i=@i+1
END
END
RETURN
END
GO

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。