在使用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)