[原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

[原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据  

我们日常开发过程中,非常常见的一种需求,把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。

在前面我们介绍了 [原创]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','/') 如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航