Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server JSON_Modify, Làm thế nào để Cập nhật tất cả?

Đây là hai lựa chọn. Tuyên bố từ chối trách nhiệm:Tôi không phải là người chuyên nghiệp tại JSON thông qua máy chủ sql 2016, nhưng tôi đã cùng nhau hack một số thứ.

Tùy chọn 1:Bạn đang tạo tập hợp kết quả rõ ràng từ chuỗi JSON. Tại sao không tạo tập hợp kết quả và sau đó cập nhật nó?

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

Tùy chọn 2:bạn có thể thao tác với các thành phần JSON, nhưng bạn phải chuyển chỉ mục cho hàm.

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. Nhận tất cả các ngày giữa hai ngày trong SQL Server

  2. 5 mẹo hữu ích nhanh cho SQL Server Production DBAs

  3. Sử dụng DBCC CLONEDATABASE để tạo bản sao chỉ lược đồ và thống kê của cơ sở dữ liệu người dùng trong SQL Server 2014 SP2

  4. Tăng nhận dạng cột SQL Server 2012 nhảy từ 6 lên 1000+ ở mục nhập thứ 7

  5. Tên cột biến SQL Server?