Я использую SQL Server 2008. У меня есть функция split, называемая func_SPLIT(@Str as varchar(2000))
, которая примет строку типа «123, 456, 789» и разделит их на формат таблицы, такой как:SQL Server: объединить данные в формат таблицы
Column:
123
456
789
Так, если выбрать одну единственную запись, я могу разделить эту строку в виде таблицы ... объединение их позже ....
Вот проблема, которую я пытаюсь понять вне как сделать.
Скажем, у меня есть вопрос:
Select Column1, Column2
from Table1
и возвращает несколько записей, как показано ниже:
Column1 Column2
a 11111, 22222, 33333
b 44444
c 55555, 66666
d 88888, 99999
Есть ли способ я могу преобразовать все эти значения в COLUMN2 в виде таблицы , поэтому я могу присоединиться к ним позже ... как этот формат ниже:
Column1 Column2
a 11111
a 22222
a 33333
b 44444
c 55555
c 66666
d 88888
d 99999
Это раскол funcion
ALTER FUNCTION [dbo].[Split]
(
@RowData NVARCHAR(MAX),
@Delimeter NVARCHAR(MAX)
)
RETURNS @RtnValue TABLE
(
ID INT IDENTITY(1,1),
Data NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @Iterator INT
SET @Iterator = 1
DECLARE @FoundIndex INT
SET @FoundIndex = CHARINDEX(@Delimeter,@RowData)
WHILE (@FoundIndex>0)
BEGIN
INSERT INTO @RtnValue (data)
SELECT
Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1)))
SET @RowData = SUBSTRING(@RowData,
@FoundIndex + DATALENGTH(@Delimeter)/2,
LEN(@RowData))
SET @Iterator = @Iterator + 1
SET @FoundIndex = CHARINDEX(@Delimeter, @RowData)
END
INSERT INTO @RtnValue (Data)
SELECT Data = LTRIM(RTRIM(@RowData))
RETURN
END
Спасибо,
мы можем видеть функцию разделения у вас есть? –
Обновлено с помощью функции split. спасибо за изучение этого ... – milacay