Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर JSON_Modify, सभी को कैसे अपडेट करें?

यहां दो विकल्प हैं। अस्वीकरण:मैं एसक्यूएल सर्वर 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. SQL सर्वर प्रदर्शन टॉप CPU क्वेरी -2

  2. SQL सर्वर मॉनिटरिंग को स्वचालित करने के लिए PowerShell और SQL डायग्नोस्टिक मैनेजर को मिलाएं

  3. घातक त्रुटि:अपरिभाषित फ़ंक्शन पर कॉल करें sqlsrv_connect ()

  4. रेडियंस () SQL सर्वर में उदाहरण

  5. डेटाबेस को खोला नहीं जा सकता क्योंकि यह संस्करण 782 है। यह सर्वर संस्करण 706 और इससे पहले के संस्करण का समर्थन करता है। डाउनग्रेड पथ समर्थित नहीं है