【发布时间】:2020-12-14 19:07:53
【问题描述】:
我有以下 Split 函数,它现在与用于 SSRS 报告的多值参数一起使用了一段时间。
CREATE FUNCTION [dbo].[FnSplit]
(@List NVARCHAR(MAX),
@SplitOn NVARCHAR(5))
RETURNS @RtnValue TABLE
(
Id INT IDENTITY(1,1),
Value NVARCHAR(100)
)
AS
BEGIN
WHILE (CHARINDEX(@SplitOn, @List) > 0)
BEGIN
INSERT INTO @RtnValue (value)
SELECT
Value = LTRIM(RTRIM(SUBSTRING(@List, 1, CHARINDEX(@SplitOn, @List) - 1)))
SET @List = SUBSTRING(@List, CHARINDEX(@SplitOn, @List) + LEN(@SplitOn), LEN(@List))
END
INSERT INTO @RtnValue (Value)
SELECT Value = LTRIM(RTRIM(@List))
RETURN
END
这种方法有点麻烦,但我注意到,由于我们升级了我们的 SQL Server 版本,现在它支持String_Split,这是一个内置函数。
我的问题是任何使用过这个的知情人士:这可以用来完全替代上面显示的多值参数函数吗?
提前谢谢你
【问题讨论】:
-
String_Split() 有一个缺点......它不 gtd 序列。此外,应尽可能避免循环。
-
您好,谢谢,有没有比我上面使用的更好的方法以及避免循环的方法?我想从最终用户的角度来看,如果它都是按字母顺序排列的,那么排序很重要。有没有办法按顺序使用 String_Split() 并以某种方式对其进行排序?
-
见下面的例子
标签: sql sql-server reporting-services