码迷,mamicode.com
首页 > 其他好文 > 详细

把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。

时间:2015-01-16 14:41:25      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

我们日常开发过程中,非常常见的一种需求,

在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这种方式转变一下也是可以实现的,但是我这里有以前我一直使用的另外一种方式,也记录一下吧。

依照惯例,我们首先来看看效果。

调用:SELECT Id FROM [Fn_StringSplitToTable](‘1,12,36,65,58,56,DF‘,‘,‘)

技术分享

具体函数如下:

-- ============================================= 
-- 调用:SELECT Id FROM [Fn_StringSplitToTable](‘1,12,36,65,58,56,DF‘,‘,‘) 
-- Create date: <Create Date,,> 
-- Description:    把用逗号分隔的字符串转换成表格数据 
-- ============================================= 
CREATE FUNCTION [dbo].[Fn_StringSplitToTable] 

    @StringX varchar(MAX), 
    @Split nvarchar(10) 

RETURNS 
@IdsTable TABLE 

    [Id] nvarchar(200) 

AS 
BEGIN 
    DECLARE @Index int 
    DECLARE @LenIndex int 
    SET @LenIndex=LEN(@Split) 
    SET @Index=CHARINDEX(@Split,@StringX,1) 
    WHILE (@Index>=1) 
    BEGIN 
        IF(LEFT(@StringX,@Index-1) <> ‘‘) 
            INSERT INTO @IdsTable SELECT LTRIM(RTRIM(LEFT(@StringX,@Index-1))) 
        SET @StringX=RIGHT(@StringX,LEN(@StringX)-@Index-@LenIndex+1) 
        SET @Index=CHARINDEX(@Split,@StringX,1) 
    END 
    IF(@StringX<>‘‘) INSERT INTO @IdsTable SELECT LTRIM(RTRIM(@StringX)) 
    
    RETURN 
END

以上调用是用逗号隔开,如果您的字符串是用/号隔开,直接修改调用字符串就行了。

-- 调用:SELECT Id FROM [Fn_StringSplitToTable](‘1/12/36/65/58/56/DF‘,‘/‘) 

把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。

标签:

原文地址:http://www.cnblogs.com/lykbk/p/sdfsdfsdf45454354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!