按照指定的分隔符截取字符返回表形式
需求描述
需求:按照逗号拆分字符串,并指定返回的格式是表.
解决方法:这里需要自定义函数结合substring截取字符串,以达到该效果.
注: 数据库数据集SQL脚本详见如下链接地址
员工表结构和数据初始化SQL脚本
SQL代码
--SQL Server:
CREATE FUNCTION strSplitTable(@str NVARCHAR(2000),@split NVARCHAR(2))
RETURNS @t TABLE(SubStr VARCHAR(1000) )
AS
BEGIN
DECLARE @tmpSubStr VARCHAR(1000),@getIndex INT
SET @getIndex=CHARINDEX(',',@str)
WHILE(@getIndex<>0)
BEGIN
SET @tmpSubStr=CONVERT(VARCHAR(1000),SUBSTRING(@str,1,@getIndex-1))
INSERT INTO @t(SubStr) VALUES (@tmpSubStr)
SET @str=STUFF(@str,1,@getIndex,'')
SET @getIndex=CHARINDEX(',',@str)
END
INSERT INTO @t(SubStr) VALUES (@str)
RETURN
END
GO
SELECT *FROm strSplitTable('Hello,World,SQL',',')
执行结果
--注: 1) 自Sql Server 2016已新增系统函数STRING_SPLIT,测试示例见下:
SELECT A.value value_A,B.value value_B
FROM
( SELECT value FROM STRING_SPLIT('A$B$C','$')
)A
LEFT JOIN
(SELECT value FROM STRING_SPLIT('A,B',',')
)B
ON A.value = B.value
/*
2) 这里STRING_SPLIT的分隔符仅支持单字符,多字符会报如下错误.
消息 214,级别 16,状态 11,第 12 行
Procedure expects parameter 'separator' of type 'nchar(1)/nvarchar(1)'.
*/
Mysql:
未见该方法.