re: «В любом случае вы не можете присоединиться к массиву из одного значения или, по крайней мере, ни в каком виде исполнения». - HLGEM Dec 30 '10 в 18: 11
Я всегда могу присоединиться к разделенному запятыми списку.
В SQL 2000 они представили UDF, и я часто использую функцию Split для того, чтобы взять разделенный запятыми список и превратить его в таблицу.
В SQl 2005 и новее вы можете ПЕРЕКРЫТЬ ПРИМЕНИТЬ эту функцию, чтобы объединить несколько строк (с разделенным запятыми списком в виде одного столбца), чтобы денормализовать это в надлежащий формат.
Я использовал эту функцию для поиска списков свойств (для недвижимости), и в целом она работала достаточно хорошо.
SELECT * FROM PropertyLists CROSS APPLY [OLReweAbf].[dbo].[udfSplit] (PropertyLists.propertyList,',')
WHERE PropertyLists.Area = 104
Функция SQL Split , от herbee:
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