如何在sql server 2016中更改JSON列名
如何将列名“JSON_F52…”更改为任意(例如SalesOrder)如何在sql server 2016中更改JSON列名,sql,sql-server,Sql,Sql Server,如何将列名“JSON_F52…”更改为任意(例如SalesOrder) 我认为最终结果将不会有任何与该名称相关的内容,它是存储结果的临时名称 如果要将结果生成一个变量 JSON的子句的输出类型为NVARCHAR(MAX),因此您可以将其分配给任何变量,如下例所示 DECLARE @SalesOrder NVARCHAR(MAX) = (SELECT TOP 10 * FROM Sales.SalesOrderHeader FOR JSON AUTO) 然后从@salesforder中选择 如果
我认为最终结果将不会有任何与该名称相关的内容,它是存储结果的临时名称 如果要将结果生成一个变量 JSON的
子句的输出类型为NVARCHAR(MAX)
,因此您可以将其分配给任何变量,如下例所示
DECLARE @SalesOrder NVARCHAR(MAX) = (SELECT TOP 10 * FROM Sales.SalesOrderHeader FOR JSON AUTO)
然后从@salesforder中选择
如果要将其存储在文件中,请选中此复选框,将json building SELECT包装到另一个SELECT中:
SELECT (
SELECT SalesOrderNumber AS 'Order.Number',
OrderDate AS 'Order.Date'
FROM Sales.SalesOrderHeader
FOR JSON PATH
) AS SalesOrder
你认为这些答案中哪一个更快?这是我使用的方法。我来到这里是为了寻找一种可能的替代方法。这种方法比Declare
更快,因为不需要将数据设置为变量。但是,将json类型作为object更改为string。是的,这个解决方案也为我提供了窍门,使我不必首先在代码中写出大量json逻辑(仍然支持ASP代码),而这样做可以删除列名(json\u F52……
),json结果将保留一个空字符串作为索引键:[]
这是一种糟糕的做法。值得注意的是,这将打破JavaScript中的点表示法属性访问器。在我看来,更好的解决方案是将SELECT
包装在另一个SELECT
中,如下面的michald
所述。