Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server JSON_Modify, Как да актуализирам всички?

Ето два варианта. Отказ от отговорност:Не съм професионалист в JSON чрез sql сървър 2016, но хакнах някои неща заедно.

Вариант 1:Очевидно създавате набор от резултати от низа JSON. Защо не създадете набора от резултати и след това да го актуализирате?

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

Вариант 2:можете да манипулирате JSON компонентите, но трябва да предадете индекса на функцията.

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. как да получите пълния набор от резултати от SSMS

  2. Параметризираната заявка ..... очаква параметъра '@units', който не беше предоставен

  3. Как мога да използвам единичен пул за връзки mssql през няколко маршрута в уеб приложение Express 4?

  4. Динамичният SQL резултати във временна таблица в SQL Съхранена процедура

  5. Съхранение и анализ на документи във файлова система на Windows със семантично търсене на SQL Server – част 2