Sql 使用SELECT子句在逗号分隔的列表中按顺序排序

Sql 使用SELECT子句在逗号分隔的列表中按顺序排序,sql,sql-server,sql-order-by,delimited-text,Sql,Sql Server,Sql Order By,Delimited Text,我使用以下代码创建逗号分隔的列表 我希望列表的顺序按特定顺序排列: USE AdventureWorks GO DECLARE @listStr VARCHAR(MAX) SELECT @listStr = COALESCE(@listStr+',' ,'') + Name FROM Production.Product SELECT @listStr GO 当我试着像 USE AdventureWorks GO DECLARE @listStr VARCHAR(MAX) SELECT @li

我使用以下代码创建逗号分隔的列表

我希望列表的顺序按特定顺序排列:

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
SELECT @listStr
GO
当我试着像

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Name
FROM Production.Product
ORDER BY sortOrder
SELECT @listStr
GO

它在“ORDER”附近显示错误
不正确的语法

我不相信在获取标量值时,您可以通过下订单。您不应该需要它,因为您只需要一个值。

使用()可以得到相同的逗号分隔结果

USE AdventureWorks
GO
DECLARE @listStr VARCHAR(MAX)

SELECT @listStr = STUFF((SELECT  ',' + Name
            FROM Production.Product
            ORDER BY sortOrder
       FOR XML PATH('')), 1, 1, '')

SELECT @listStr
GO
几乎每次在脚本中看到“附近的语法不正确”时,如果该脚本看起来是正确的,或者是从其他地方复制和粘贴的,则文本中可能会出现不可见的无效字符,并显示为空白。
我的建议是打开一个新窗口,手动重新键入整个查询,或者尝试猜测无效字符的位置以清除它们。

排序规则是什么??它没有在任何地方定义,也不在表中。Order是my Table中的列名。请确保文本中没有任何无效字符。无效字符可能来自代码的复制粘贴,可能显示为“空格”,但实际上解释器不会以这种方式看到。确保“BY”是英文符号,订单和订单之间没有特殊符号BY@Petiolvanov,valex这是我发布的代码示例,但实际上我也在使用连接,可能是因为这个错误&我没有得到任何拼写信息。我想问的是
@listStr
variableSTUFF中被删除的值的顺序,它只是用一个空字符串替换了第一个',,这是创建分隔列表的FOR XML子句。