[英]SQL Server parse JSON to update another table
我在其中一列中有一個包含 JSON 數據的表,我正在嘗試解析 JSON 數據並插入臨時表
DECLARE @TEMPTABLE
(
ID INT,
Status NVARCHAR(50),
Cost DECIMAL(20, 0)
)
INSERT INTO @TEMPTABLE
SELECT
ID,
JSON_VALUE(mydata, '$.Status') AS Status,
JSON_VALUE(mydata, '$.Cost') AS Cost
FROM Expense
我收到此錯誤:
將數據類型 nvarchar 轉換為數值時出錯
如果我注釋掉“ Cost
”列,同樣可以正常工作。
成本表中的樣本 JSON 數據
| ID | mydata
+----+-------------------------------------
| 1 | {"Status":"Shipped","Cost":"$10.50"}
您可以將該值轉換為 MONEY。 它比小數()更寬容一點
例子
Declare @Expense Table ([ID] int,mydata varchar(50))
Insert Into @Expense Values
(1,'{"Status":"Shipped","Cost":"$10.50"}')
SELECT ID
,JSON_VALUE(mydata,'$.Status') as Status
,try_convert(money,JSON_VALUE(mydata,'$.Cost')) as Cost
FROM @Expense
退貨
ID Status Cost
1 Shipped 10.50
您可能需要將字符串轉換為十進制值,請嘗試以下操作:
DECLARE @TEMPTABLE
( ID INT , Status nvarchar(50), Cost DECIMAL(20,0))
INSERT INTO @TEMPTABLE
(
ID,
Status,
Cost
)
SELECT
ID,
JSON_VALUE(mydata,'$.Status') AS [Status],
TRY_CAST(REPLACE(JSON_VALUE(mydata,'$.Cost'), '$', '') AS DECIMAL(20,0)) AS [Cost]
FROM Expense
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.