2

我正在使用以下代码创建逗号分隔列表。

我想要以特定顺序排列列表的顺序:

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

它显示错误incorrect syntax near ' ORDER'

4

3 回答 3

8

使用STUFF () 它给你相同的逗号分隔结果

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
于 2013-07-24T13:08:30.973 回答
0

我不相信您可以在获得标量值时下订单。而且您不应该需要它,因为您只期望一个值。

于 2013-07-24T13:06:51.580 回答
-1

几乎每次您在看似正确的脚本中看到“附近有不正确的语法”,或者从其他地方复制和粘贴时,您可能在文本中包含不可见的无效字符,并显示为空白区域。我的建议是打开一个新窗口并手动重新输入整个查询,或者尝试猜测无效字符在哪里清理它们。

于 2013-07-24T13:26:03.730 回答