sql拆分字符串

一个字符串:‘a|b|c’
想从中提取出来分别放到@a,@b,@c中,问有没有简单的方法实现?

 

--先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串
   (@str nvarchar(2000),--源字串
    @sn int,    --提取序号
    @Deli varchar(1) --分隔符
   )
    RETURNS varchar(100)
AS
BEGIN
declare @first int,@last int,@result varchar(1000),@sn0 int
select @sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while @sn0!=@sn
  begin
  select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
  end
if @last-@first-1<0
set @result=''
else
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN ( @RESULT )
END

GO

--查询方法:
DECLARE @A VARCHAR(100),@B VARCHAR(100),@C VARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|') ,
@B=DBO.MYSPLIT('A|B|C',2,'|') ,
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT @A,@B,@C

你可能感兴趣的:(数据库)