Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server JSON_Modify, Jak zaktualizować wszystko?

Oto dwie opcje. Zastrzeżenie:nie jestem profesjonalistą w JSON przez serwer sql 2016, ale zhakowałem razem kilka rzeczy.

Opcja 1:wyraźnie tworzysz zestaw wyników z ciągu JSON. Dlaczego nie utworzyć zestawu wyników, a następnie go zaktualizować?

DECLARE @jsontable TABLE (A varchar(50), b varchar(50), c varchar(50))
DECLARE @JSON NVARCHAR(MAX)

SET @JSON = 
N'{
"A":1,
"TMP": [    
    {"A":"VALUE1", "B": "VALUE2", "C": 1},
    {"A":"VALUE3", "B": "VALUE4", "C": 2},
    {"A":"VALUE5", "B": "VALUE6", "C": 3}]}
'

--SET @JSON = JSON_MODIFY(@JSON, '$.TMP.A', 'JEJE')
INSERT INTO @jsontable (a,b,c)
SELECT * FROM OPENJSON(@JSON, '$.TMP') WITH ( A NCHAR(10), B NCHAR(10), C INT )

UPDATE @jsontable 
SET a = 'JEJE' 

SELECT * 
FROM @jsontable

Opcja 2:możesz manipulować komponentami JSON, ale musisz przekazać indeks do funkcji.

DECLARE @JSON NVARCHAR(MAX)
SET @JSON = 
N'{
"A":1,
"TMP": [    
    {"A":"VALUE1", "B": "VALUE2", "C": 1},
    {"A":"VALUE3", "B": "VALUE4", "C": 2},
    {"A":"VALUE5", "B": "VALUE6", "C": 3}]}
'

SET @JSON = JSON_MODIFY(@JSON, '$.TMP[0].A', 'JEJE')
SET @JSON = JSON_MODIFY(@JSON, '$.TMP[1].A', 'JEJE')
SET @JSON = JSON_MODIFY(@JSON, '$.TMP[2].A', 'JEJE')

SELECT * FROM OPENJSON(@JSON, '$.TMP') WITH ( A NCHAR(10), B NCHAR(10), C INT )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Metoda SqlDataAdapter.Fill wolno

  2. Przekonanie do regularnego serwisowania serwera SQL

  3. Odpowiednik funkcji Sleep() w SQL Server:instrukcja WAITFOR

  4. Jak używać sortowania UTF-8 w bazie danych SQL Server?

  5. Wgląd w unikalne ograniczenia SQL Server