Sql-Server
我可以在 SQL Server 2016 CTP 2.X 中將 VARCHAR 欄位正文轉換為不帶引號的 JSON 結果嗎?
我已經下載並安裝了 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 使用
OPENJSON
和JSON_VALUE
. 這些構造根本沒有在 CTP 中提供,包括 CTP 2.4。這並不意味著沒有什麼方法可以立即獲得您想要的結果,但是您可能為此花費的時間和精力可能不值得,特別是如果您需要的功能將在下一個可用CTP,應該很快就會發貨。