You can also create a function to do that as such
CREATE FUNCTION [dbo].[RowToManyRows] ( @StringInput VARCHAR(8000) )
RETURNS @OutputTable TABLE ( [String] VARCHAR(10) )
AS
BEGIN
DECLARE @String VARCHAR(10)
WHILE LEN(@StringInput) > 0
BEGIN
SET @String = LEFT(@StringInput,
ISNULL(NULLIF(CHARINDEX(' ', @StringInput) - 1, -1),
LEN(@StringInput)))
SET @StringInput = SUBSTRING(@StringInput,
ISNULL(NULLIF(CHARINDEX(' ', @StringInput), 0),
LEN(@StringInput)) + 1, LEN(@StringInput))
INSERT INTO @OutputTable ( [String] )
VALUES ( @String )
END
RETURN
END
GO
You then query that function as such
SELECT ID, String
FROM myTable CROSS APPLY [dbo].RowToManyRows(myTable.Description)
Example:
CREATE TABLE myTable
( ID INT,
Description VARCHAR(50)
)
INSERT INTO dbo.myTable
( ID, Description )
VALUES ( 1, -- ID - int
'A B' -- Description - varchar(50)
),
(2,
'C D')
Results
1 A
1 B
2 C
2 D