拼接用MSSQL拼接多行数据的方法(mssql怎么多行数据)

SQL 中有一种功能叫做“ 拼接”,即将多行数据“ 拼接”成1行数据,使得我们可以更快更有效地进行处理,而在MSSQL数据库中,可以利用 FOR XML PATH 来实现拼接多行数据。下面我们就来看下它的具体应用:

首先我们在数据库中新建一个表,表的结构如下:

CREATE TABLE [TestTable] (
[ID] INT IDENTITY (1, 1) PRIMARY KEY,
[Col1] VARCHAR(50) NOT NULL,
[Col2] VARCHAR(50) NOT NULL
)
INSERT INTO [TestTable]
VALUES('A','1')
INSERT INTO [TestTable]
VALUES('B','2')
INSERT INTO [TestTable]
VALUES('C','3')
INSERT INTO [TestTable]
VALUES('D','4')

插入四条数据后,表中数据如下:

| ID | Col1 | Col2 |

| :—-: | :–: | :–: |

| 1 | A | 1 |

| 2 | B | 2 |

| 3 | C | 3 |

| 4 | D | 4 |

接下来就是我们利用 FOR XML PATH 来拼接多行数据,SQL语句如下:

SELECT
X.str1
FROM (
SELECT
A.Col1 + ', ' AS [text()]
FROM TestTable as A
FOR XML PATH ('')
) T(str1)

经过上面的SQL语句处理之后,拼接结果如下:

| str1 |

| :—- |

| A, B, C, D |

可以看到,通过FOR XML PATH 来实现的拼接,可以将多行数据拼接成1行的数据,这是MSSQL拼接多行数据的一种方法。

拼接多行数据的方法,除了FOR XML PATH这种方法之外,还可以使用XQuery 的string-join()函数实现:

SELECT 
RTRIM(X.str1) AS str1
FROM
(SELECT
(SELECT
',' + B.Col1
FROM TestTable AS B
WHERE B.ID
ORDER BY B.ID
FOR XML PATH (''))
FROM
TestTable AS A
) T(str1)

经过XQuery string-join()函数处理之后,拼接结果与之前一样:

| str1 |

| :—- |

| A, B, C, D |

总结来说,可以利用 FOR XML PATH 或者XQuery string-join()函数实现在MSSQL 数据库中拼接多行数据的方法,如此一来,我们就能快速而实效地将多行数据拼接起来。


数据运维技术 » 拼接用MSSQL拼接多行数据的方法(mssql怎么多行数据)