小编Int*_*ble的帖子

为什么串联顺序会随着用户定义的表类型而改变?

在使用CONCAT用户定义的表类型时,我遇到了在我看来是一个奇怪的排序问题。

我已经把 SQL 放在下面,让我可以重现这个:

我有以下用户类型:

CREATE TYPE [dbo].[StringList] AS TABLE
(
    [Value] VARCHAR(8000) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

以及以下用于设置所有内容的查询:

DECLARE @ColumnNames AS TABLE([ColumnName] VARCHAR(MAX))
DECLARE @ValueTable AS [dbo].[StringList] --VariableLineA
--DECLARE @ValueTable AS TABLE([Value] VARCHAR(MAX)) --VariableLineB

INSERT INTO @ColumnNames([ColumnName])
VALUES
('Forename'),
('Surname')

INSERT INTO @ValueTable([Value])
VALUES
('Ellis'), ('Ali')
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的查询:

SELECT CONCAT(STRING_AGG(CONCAT([ColumnName], ' - ',  [sc].[Value]), ', '), ', ') -- QueryLineA
        --CONCAT(STRING_AGG([ColumnName] + ' - ' + [sc].[Value], ', '), ', ') --QueryLineB
FROM        @ValueTable AS [sc]
INNER JOIN  @ColumnNames ON …
Run Code Online (Sandbox Code Playgroud)

sql-server concat sql-server-2014

3
推荐指数
1
解决办法
293
查看次数

标签 统计

concat ×1

sql-server ×1

sql-server-2014 ×1