Вы не должны хранить данные в этом формате в своей базе данных из-за использования индексов и т. Д. Но в некоторых случаях вы не можете избежать этого, если иностранное приложение доставляет информацию таким образом, например. Если вам нужно сохранить его таким образом и дезагрегировать, чтобы сохранить его в хорошем формате, вы можете использовать следующую пользовательскую функцию для ее достижения.
CREATE FUNCTION dbo.udf_split (@String nvarchar(max), @Delimiter nchar(1))
RETURNS @Results Table (Items nvarchar(max))
AS
BEGIN
DECLARE @Index int
DECLARE @Slice nvarchar(max)
SET @Index = 1
IF @String IS NULL RETURN
WHILE @Index != 0
BEGIN
SELECT @Index = CHARINDEX(@Delimiter, @String)
IF @Index != 0
SELECT @Slice = LEFT(@String, @Index - 1)
ELSE
SELECT @Slice = @String
INSERT INTO @Results(Items) VALUES (LTRIM(RTRIM(@Slice)))
SELECT @String = RIGHT(@String, LEN(@String) - @Index)
IF Len(@String) = 0 BREAK
END
RETURN
END
GO
Если бы @GordonLinoff был здесь, он сказал бы вам, что задача _best_ - нормализовать структуру базы данных, чтобы элементы хранились в реляционной манере. Прямо сейчас, если вы передадите мне «id», у меня нет способа узнать, с какой частью этого элемента он связан. –
Никогда не храните данные как отдельные элементы, подобные этому, это вызовет у вас массу проблем. Один элемент в строке - это путь SQL! – jarlh