相关疑难解决方法(0)

为什么(以及如何)使用master..spt_values拆分列?

将问题的答案分解为"一列拆分为多行",我在此重新编写为[1].

什么是(含义)Type = 'P'以及为什么使用未记录的master..spt_values来拆分列?它有什么好处?


[1]

CREATE TABLE dbo.Table1 
(
    Col1        CHAR(1),
    Col2        CHAR(1),
    Col3        CHAR(1),
    Col4        VARCHAR(50)
)
GO

INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3')
GO
INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9')
GO


SELECT
    T.col1, RIGHT(LEFT(T.col4,Number-1),
    CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1))))
FROM
    master..spt_values,
    table1 T
WHERE
    Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND
    (SUBSTRING(T.col4,Number,1) = ','
    -- OR SUBSTRING(T.col4,Number,1)  = '') --this does not work correctly anyway
Run Code Online (Sandbox Code Playgroud)

相关问题:

sql t-sql sql-server database-design

16
推荐指数
1
解决办法
1万
查看次数

标签 统计

database-design ×1

sql ×1

sql-server ×1

t-sql ×1