将一列拆分为多行

use*_*688 9 sql-server

谁能告诉我如何实现这一目标?在某些情况下,我的表中的列包含逗号分隔值.如果是,我需要为这些值创建新行.

此外,作为示例,表包含1行和4列Col1 | Col2 | Col3 | Col4具有以下值A | B | C | 分别为1,2,3.因此,Col4包含字符串'1,2,3',我需要拆分逗号分隔值并将它们放在自己的行上,这样表格就会包含1行,其中1 2和3位于他们自己的行上在Col4.

Byr*_*ock 8

我想你可以这样做:

SELECT
    T.id, RIGHT(LEFT(T.csv,Number-1),
    CHARINDEX(',',REVERSE(LEFT(','+T.csv,Number-1))))
FROM
    master..spt_values,
    your_table T
WHERE
    Type = 'P' AND Number BETWEEN 1 AND LEN(T.csv)+1
    AND
    (SUBSTRING(T.csv,Number,1) = ',' OR SUBSTRING(T.csv,Number,1)  = '') 
Run Code Online (Sandbox Code Playgroud)

代码在这个网站上被无耻地窃取了.