Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server JSON_Modify, Bagaimana Cara Memperbarui semua?

Berikut adalah dua pilihan. Penafian:Saya bukan ahli di JSON melalui sql server 2016, tetapi saya telah meretas beberapa hal bersama-sama.

Opsi 1:Anda dengan jelas membuat kumpulan hasil dari string JSON. Mengapa tidak membuat kumpulan hasil dan kemudian memperbaruinya?

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

Opsi 2:Anda dapat memanipulasi komponen JSON, tetapi Anda harus meneruskan indeks ke fungsi.

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. Memahami Pernyataan SQL Server ALTER TABLE ADD COLUMN

  2. Cara mendapatkan koneksi String dari database

  3. Memahami Pentingnya Pengaturan Memori di SQL Server

  4. Pengoptimalan kinerja XML Server XML

  5. Kemungkinan Cara untuk Memperbaiki Masalah Korupsi Metadata SQL Server