re:“无论如何,您都不能从单个值加入数组,或者至少不能以任何类型的高性能方式。” – HLGEM 2010 年 12 月 30 日 18:11
我可以而且肯定会一直加入逗号分隔的列表。
在 SQL 2000 中,他们引入了 UDF,我经常使用一个名为 Split 的函数来获取逗号分隔的列表并将其转换为表格。
使用 SQl 2005 和更新版本,您可以交叉应用此函数以连接多行(以逗号分隔的列表作为单列),从而将其反规范化为适当的格式。
我使用此功能来查找房产列表(用于房地产),它通常运行良好。
SELECT * FROM PropertyLists CROSS APPLY [OLReweAbf].[dbo].[udfSplit] (PropertyLists.propertyList,',')
WHERE PropertyLists.Area = 104
SQL Split Function,作者:赫比:
CREATE FUNCTION [dbo].[udfSplit](@text nvarchar(max), @delimiter char(1) = ‘ ‘)
RETURNS @Strings TABLE ( position int IDENTITY PRIMARY KEY, value nvarchar(max) )
AS
BEGIN
DECLARE @index int
SET @index = -1
WHILE (LEN(@text) > 0)
BEGIN
SET @index = CHARINDEX(@delimiter , @text)
IF (@index = 0) AND (LEN(@text) > 0)
BEGIN
INSERT INTO @Strings VALUES (@text) BREAK
END
IF (@index > 1)
BEGIN
INSERT INTO @Strings VALUES (LEFT(@text, @index – 1))
SET @text = RIGHT(@text, (LEN(@text) – @index))
END
ELSE
SET @text = RIGHT(@text, (LEN(@text) – @index))
END
RETURN
END