问题
Let's suppose we have a simple select query which return result like below
FirstName LastName PayScale
----------- ------------ ---------------
Craig L 150000
Alice,Lisa simons 100000
So if we have comma-separated first name, then I want result like this
FirstName LastName PayScale
----------- ------------ ---------------
Craig L 150000
Alice simons 100000
Lisa simons 100000
回答1:
You can write a query as:
DECLARE @employee TABLE (FirstName VARCHAR(100),
LastName VARCHAR(100),
PayScale INT)
INSERT INTO @employee VALUES
('Craig','L',150000) ,
('Alice,Lisa','simons',100000)
SELECT Split.a.value('.', 'VARCHAR(100)') AS FirstName , LastName ,PayScale
FROM (SELECT CAST ('<M>' + REPLACE(FirstName, ',', '</M><M>') + '</M>'
AS XML) AS FirstName , LastName ,PayScale
FROM @employee)
AS A
CROSS APPLY FirstName.nodes ('/M') AS Split(a)
来源:https://stackoverflow.com/questions/27498145/make-a-separate-row-if-a-column-contains-comma-separated-value