摘要:
由于我们存储数据时,常喜欢将数据按照一定的格式进行叠加,然后存储在数据库中,使用数据时,希望使用行集数据进行使用,下文将讲述sql版的字符串分隔函数的使用方法
实验环境:sqlserver 2008
常见的数据表中合并数据格式如下:
1005,8888,1009,1020,
用户希望输入 以上字符串和分隔字符逗号,返回”表格数据”。
———————————————————-
由于sqlserver 2008版本中,没有原生态的split分隔函数(sqlserver 2016版本中有string_split函数),
我们需使用自定义函数,制作字符串分隔函数,达到数据分隔的目的,如下所示:
drop function [dbo].[sqlServerSplit] go /* 创建自定义字符串分隔函数 使用 charindex substring 函数完成此功能的编写 */ CREATE FUNCTION [dbo].[sqlServerSplit] ( @inputInfo nvarchar(800), @splitString nvarchar(8) ) RETURNS @tmp TABLE(outPutInfo nvarchar(500)) AS BEGIN -- 定义临时变量 DECLARE @tmpI int,@tempInput nvarchar(500) SET @tmpI=CHARINDEX(@splitString,@inputInfo) ---获取当前字符串中分隔字符串的起始位置 WHILE(@tmpI<>0) BEGIN SET @tempInput = SUBSTRING(@inputInfo,1,@tmpI-1) INSERT INTO @tmp(outPutInfo) VALUES(@tempInput) SET @inputInfo = SUBSTRING(@inputInfo,@tmpI+1,LEN(@inputInfo)-@tmpI) SET @tmpI=CHARINDEX(@splitString,@inputInfo) END /*分隔字符串最后位置数据插入*/ SET @tempInput = @inputInfo IF (LEN(@tempInput)>0) INSERT INTO @tmp(outPutInfo) VALUES(@inputInfo) RETURN END GO ---函数测试: SELECT * FROM dbo.[sqlServerSplit](N'猫猫,maomao365,猫猫小屋,这是一个blog,sqlserver教程网,sqlserver技巧网,',',')