在 MS SQL 中使用带分隔符的管道转换为列
Convert into column using delimited PIPE in MS SQL
现值
全部(一栏)
--
43 | 00043 | 22/09/2016 | Ooredoo - AuU TX | Raj singh
我希望它应该在单独的列中,如下所示
ID Key Date Company Owner
43 00043 22/09/2016 Ooredoo - AuU TX Raj singh
您可以使用以下方法并在开头声明一个分隔符。这是一个示例:
DECLARE @Delimiter VARCHAR(40)
SET @Delimiter = '|'
;WITH CTE AS
(
SELECT
CAST('<M>' + REPLACE([ColName], @Delimiter , '</M><M>') + '</M>' AS XML)
AS [ColName XML]
FROM [Table]
)
SELECT
[ColName XML].value('/M[1]', 'VARCHAR(40)') As [ID],
[ColName XML].value('/M[2]', 'VARCHAR(40)') As [Key],
[ColName XML].value('/M[3]', 'VARCHAR(40)') As [Date],
[ColName XML].value('/M[4]', 'VARCHAR(40)') As [Company],
[ColName XML].value('/M[5]', 'VARCHAR(40)') As [Owner]
FROM CTE
现值
全部(一栏)
--
43 | 00043 | 22/09/2016 | Ooredoo - AuU TX | Raj singh
我希望它应该在单独的列中,如下所示
ID Key Date Company Owner
43 00043 22/09/2016 Ooredoo - AuU TX Raj singh
您可以使用以下方法并在开头声明一个分隔符。这是一个示例:
DECLARE @Delimiter VARCHAR(40)
SET @Delimiter = '|'
;WITH CTE AS
(
SELECT
CAST('<M>' + REPLACE([ColName], @Delimiter , '</M><M>') + '</M>' AS XML)
AS [ColName XML]
FROM [Table]
)
SELECT
[ColName XML].value('/M[1]', 'VARCHAR(40)') As [ID],
[ColName XML].value('/M[2]', 'VARCHAR(40)') As [Key],
[ColName XML].value('/M[3]', 'VARCHAR(40)') As [Date],
[ColName XML].value('/M[4]', 'VARCHAR(40)') As [Company],
[ColName XML].value('/M[5]', 'VARCHAR(40)') As [Owner]
FROM CTE