在SQL Server 2008中(SQL Azure數據集)我有一個查詢,我試圖從現有的JSON格式列中解析多個元素。帶替換方法的SQL Server 2008 JSON_VALUE
JSON_VALUE
與替換方法對前幾列工作正常。
但是,SQL Server在添加額外的JSON_VALUE
後使用替換方法現在引發錯誤。
這是我的查詢:
SELECT
ApplicationID, Type, CreateDate,
JSON_VALUE(RawContent,'$.errorName') AS ErrorName,
JSON_VALUE(replace(replace(RawContent,'[',''),']',''),'$.errorMessage') AS ErrorMessage,
JSON_VALUE(RawContent,'$.bookId') AS BookId,
JSON_QUERY(RawContent,'$.urlParams') AS UrlParams,
JSON_VALUE(replace(RawContent,',',''),'$.userAgent') AS UserAgent, --line in question
JSON_VALUE(replace(RawContent,' ','') ,'$.stackTrace') AS StackTrace
FROM
dbo.Feedback
WHERE
ISJSON(RawContent) > 0
ORDER BY
RecordID
我的JSON格式塔(RawContent
)看起來是這樣的:
{"errorName": "not authorized",
"errorMessage":"Request denied: account permission error",
"bookId":"150675",
"urlParams":{"audiobook":"https://node.axisnow.com/#audiobook/"},
"userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"}
所以我期待的查詢,爲每個JSON_VALUE
列,而從「userAgent」列中刪除逗號',',如下所示:
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36
只是沒了逗號「」看起來像:(KHTML例如Gecko)
的替代方法適用於errormessage
,和堆棧跟蹤,但由於某些原因,它會導致一個錯誤,當我上的userAgent行運行它,它似乎不喜歡「,」字符,我想知道我需要使用什麼,因爲我無法在網上找到任何東西。
錯誤消息:
消息13609,級別16,狀態2,行1
JSON文本的格式不正確。在位置43找到意外字符':'。
請幫忙。我的老闆以爲這是昨天完成的......
所有這些JSON函數都是**新功能**在SQL Server ** 2016 ** - 我不知道你期望他們如何在SQL Server ** 2008中工作** ...... –
您可能正在運行SSMS 2008(管理GUI),但針對2016引擎?運行'SELECT @@ VERSION'並查看你的編碼對應的**引擎版本**。再說一遍:SQL Server ** 2008 **從來沒有像「JSON_VALUE」這樣的東西 - 這個**不可能在2008年工作(除非你已經安裝了某種基於.NET/SQL-CLR的擴展或某種東西)。 –
@marc_s JSON_VALUE可以工作,因爲數據集來自SQL Azure。不適當編輯問題以反映這一點。謝謝 –