Sql-Server

我可以在 SQL Server 2016 CTP 2.X 中將 VARCHAR 欄位正文轉換為不帶引號的 JSON 結果嗎?

  • March 11, 2019

我已經下載並安裝了 SQL Server 2016 Community Technology Preview 2.3,如果我理解正確的話,它應該包含一個名為JSON_VALUE. (更新:CTP 2.4 已經發布,也沒有提到新的 JSON 功能)

從已經可以使用的 JSON 功能開始,... FOR JSON AUTO可以在我的SELECT語句中指定“”,如下所示:

SELECT [ID], [DATA] FROM [dbo].[JSONDEMO] FOR JSON AUTO

上面我的展示查詢的結果將是一個包含一列的結果集,具有一些自動生成的JSON_F123123123名稱和 JSON 格式的值,例如:

[{"ID":"IDVALUE", "DATA":"{ {name:'ramsoft', id:1234}, ... }", ... }] 

到目前為止一切順利,但如果DATA包含 JSON 數據,您將收到包含數據字元串文字的 JSON 文件,即使該字元串文字是有效的 JSON。您實際上可能想要的,或者我想要的,是:

[{"ID":"IDVALUE", "DATA":{ {name:'ramsoft', id:1234}, ... }, ... }] 

根據一些 MS 部落格文章,要將 JSON 值作為 JSON 值而不是VARCHAR(n)字元串,您應該編寫:

SELECT [ID], JSON_VALUE(D.DATA,'$') DATA   
FROM [dbo].[JSONDEMO] D FOR JSON AUTO

這不起作用,我收到一個錯誤:

'JSON_VALUE' is not a recognized built-in function name.

在 CTP 2.3 中是否可以使用某種 JSON 值提取,或者這在 CTP 3 之前不會存在?

您需要等待 CTP 3 使用OPENJSONJSON_VALUE. 這些構造根本沒有在 CTP 中提供,包括 CTP 2.4。這並不意味著沒有什麼方法可以立即獲得您想要的結果,但是您可能為此花費的時間和精力可能不值得,特別是如果您需要的功能將在下一個可用CTP,應該很快就會發貨。

引用自:https://dba.stackexchange.com/questions/115670