下面的Split功能运行良好。但它改变了我的输入顺序。 请帮助我获得所需的输出。SplitString SQL服务器
关于http://www.codeproject.com/Tips/85943/Split-function。
输入
SELECT * from dbo.fnStringSplitter('1,3,2', ',')
期望输出
1
3
2
不
1
2
3
下面的Split功能运行良好。但它改变了我的输入顺序。 请帮助我获得所需的输出。SplitString SQL服务器
关于http://www.codeproject.com/Tips/85943/Split-function。
输入
SELECT * from dbo.fnStringSplitter('1,3,2', ',')
期望输出
1
3
2
不
1
2
3
您需要通过使用才能获得结果所需的顺序尝试改变这样的分割字符串函数
尝试这种方式
CREATE FUNCTION dbo.Fnstringsplitter (@string NVARCHAR(MAX),
@delimiter VARCHAR(2))
RETURNS @result TABLE(
id INT IDENTITY(1, 1),
split_val NVARCHAR(MAX))
BEGIN
DECLARE @start INT,
@end INT
SELECT @start = 1,
@end = Charindex(@delimiter, @string)
WHILE @start < Len(@string) + 1
BEGIN
IF @end = 0
SET @end = Len(@string) + 1
INSERT INTO @result
(split_val)
VALUES (Substring(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = Charindex(@delimiter, @string, @start)
END
RETURN
END
查询:
SELECT split_val
FROM dbo.Fnstringsplitter('1,3,2', ',')
ORDER BY id
注:这不是分割数据的有效方式。但在你的情况下可靠
SQL中的数据集本质上是无序的。当你需要一个明确的命令时,你必须明确地请求/创建它。这可以使用ORDER BY子句或通过前端代码完成。
为什么你的预期产量是1,3,2? – Lamak
你通过1,2,3,你想要1,3,2。我想你是改变顺序不拆分字符串功能 –
由问题编辑。请工作和回扣。这是合理的问题 – jamir