3
A
回答
7
CREATE FUNCTION dbo.fnSplit(
@sInputList VARCHAR(8000) -- List of delimited items
, @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
) RETURNS @List TABLE (item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
GO
--Test
select * from fnSplit('1,22,333,444,,5555,666', ',')
select * from fnSplit('1##22#333##444','##') --note second item has embedded #
select * from fnSplit('1 22 333 444 5555 666', ' ')
+1
优秀的解决方案!非常清楚,简短和直接。 – 2012-07-27 14:43:02
1
平添了几分扭曲,以获得结果条目是整数和杠杆SQL的NVARCHAR(MAX)功能2008+
GO
/****** Object: UserDefinedFunction [dbo].[udf_fnSplit] Script Date: 05/28/2013 15:22:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[udf_fnSplit](
@sInputList VARCHAR(MAX) -- List of delimited items
, @sDelimiter VARCHAR(MAX) = ',' -- delimiter that separates items
) RETURNS @List TABLE (id int)
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT CONVERT(INT,@sItem)
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
相关问题
- 1. BLOB到字符串,SQL Server
- 2. SQL子字符串函数
- 3. SQL字符串函数
- 4. Sql字符串函数
- 5. SQL Server临时表拆分字符串
- 6. SQL Server导入行字符串表列
- 7. SQL Server查询找到字符串
- 8. SQL Server添加填充到字符串
- 9. 传递字符串值到SQL Server
- 10. 保存UTF8字符串到SQL Server
- 11. SQL Server连接字符串
- 12. SQL Server子字符串
- 13. SQL Server字符串解析
- 14. SQL Server连接字符串
- 15. SQL Server字符串解析
- 16. SQL Server字符串约束
- 17. Sql Server字符串interning
- 18. SQL Server子字符串
- 19. SQL Server连接字符串
- 20. SQL Server |字符串比较
- 21. SQL Server连接字符串
- 22. SQL Server中的字符串
- 23. SQL Server Sproc大字符串参数?
- 24. SQL Server数据库连接字符串
- 25. 从SQL Server 2005 SP3到SQL Server 2012 SP1的连接字符串
- 26. 使用SQL Server字符串函数来提取值
- 27. 字符串转换为函数SQL Server日期时间
- 28. 的SQL Server:使用的和在字符串函数
- 29. 使用SQL Server中的函数进行字符串操作
- 30. 字符串函数生成的SQL Server动态查询2008
我强烈推荐的文章,可用从http://www.sommarskog.se/arrays-in-sql.html(SQL Server数组和列表)中可以了解许多不同的方法。 – Enull 2011-03-10 13:59:25