簡體   English   中英

SQL 服務器解析 JSON 以更新另一個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM