Konuyu Oyla:
  • Derecelendirme: 4.5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQL de JSON Islemleri
#1
Selamlar

SQL 2016 ve üst sürümlerinde kullanabileceğiniz JSON formatındaki bir veriyi işlerken eğer array içinde array varsa çalıştırabileceğiniz bir yöntem

Detaylı örnekler için
https://docs.microsoft.com/en-us/sql/rel...erver-2017

JSON To Table
DECLARE @json NVARCHAR(MAX)
   = '{
     "Ad"    : "Ad 1",
     "Soyad" : "Soyad 1",
     "Adresler" : [{
                        "AdresTip" : "Merkez",
                        "Ulke" : "TR",
                        "Il"   : "34",
                        "Ilce" : "Kadıköy",
                        "Telefonlar" : [{
                                              "TelTip"  : "Tel",
                                              "Numara": "34-12"
                                         },
                                         {
                                              "TelTip"  : "Fax",
                                              "Numara": "34-34"
                                         }
                ]
                    },
                    {
                        "AdresTip" : "Sube",
                        "Ulke" : "TR",
                        "Il"   : "34",
                        "Ilce" : "Şişli",
                        "Telefonlar" : [{
                                              "TelTip"  : "Tel",
                                              "Numara": "34-56"
                                          },
                                          {
                                              "TelTip"  : "Fax",
                                              "Numara": "34-78"
                                          }
                ]
                    }
                    ,
                    {    "AdresTip" : "Merkez",
                        "Ulke" : "TR",
                        "Il"   : "35",
                        "Ilce" : "Alsancak",
                        "Telefonlar" : [{
                                              "TelTip"  : "Tel",
                                              "Numara": "35-12"
                                         },
                                         {
                                              "TelTip"  : "Fax",
                                              "Numara": "35-34"
                                         }
                ]
                    },
                    {
                        "AdresTip" : "Sube",
                        "Ulke" : "TR",
                        "Il"   : "35",
                        "Ilce" : "Karşıyaka",
                        "Telefonlar" : [{
                                              "TelTip"  : "Tel",
                                              "Numara": "35-56"
                                          },
                                          {
                                              "TelTip"  : "Fax",
                                              "Numara": "35-78"
                                          }
                ]
                    }
              ]
}'



SELECT
   TKisiler.Ad
  ,TKisiler.Soyad
  ,TAdresler.[AdresTip]
  ,TAdresler.[Ulke]
  ,TAdresler.[Il]
  ,TAdresler.[Ilce]
  ,TTelefonlar.[TelTip]
  ,TTelefonlar.[Numara]
FROM
   OPENJSON(@json)
       WITH
       (
           Ad NVARCHAR(25)     '$.Ad'
          ,Soyad NVARCHAR(25)  '$.Soyad'
          ,Adresler NVARCHAR(MAX) '$.Adresler' AS JSON
       ) AS TKisiler
   CROSS Apply OPENJSON(Adresler, '$')
       WITH
       (
           [AdresTip] NVARCHAR(25) '$.AdresTip'
          ,[Ulke] NVARCHAR(25)   '$.Ulke'
          ,[Il] NVARCHAR(25)     '$.Il'
          ,[Ilce] NVARCHAR(25)   '$.Ilce'
          ,Telefonlar NVarchar(MAX) '$.Telefonlar' AS JSON
       ) AS TAdresler
   CROSS Apply OPENJSON(Telefonlar, '$')
       WITH
       (
           [TelTip] NVARCHAR(25) '$.TelTip'
          ,[Numara] NVARCHAR(25) '$.Numara'
       ) AS TTelefonlar


Table To JSON Format
Select * From Table 
 For JSON Path
yada
Select * From Table 
 For JSON Auto

Table To JSON  Array Format (Alıntı)
DROP TABLE IF EXISTS #Home;
GO
DROP TABLE IF EXISTS #Car;
GO
DROP TABLE IF EXISTS #Toy;
GO

CREATE TABLE #Home
(
HomeId int IDENTITY PRIMARY KEY,
City nvarchar(20),
State nchar(2)
);
GO

CREATE TABLE #Car
(
CarId int IDENTITY PRIMARY KEY,
   HomeId int,
   Year smallint,
   Make nvarchar(20),
Model nvarchar(20),
   FOREIGN KEY (HomeId) REFERENCES #Home(HomeId)
);
GO

CREATE TABLE #Toy
(
ToyId int IDENTITY PRIMARY KEY,
   HomeId int,
   Category nvarchar(20),
   RiderCapacity int,
   FOREIGN KEY (HomeId) REFERENCES #Home(HomeId)
);
GO

INSERT INTO #Home (City,State) VALUES ('Cleveland','OH')
INSERT INTO #Home (City,State) VALUES ('Malibu','CA')

INSERT INTO #Car (HomeId,Year, Make, Model) VALUES ('1','2017', 'Volkswagen', 'Golf')
INSERT INTO #Car (HomeId,Year, Make, Model) VALUES ('2','2014', 'Porsche', '911')

INSERT INTO #Toy (HomeId,Category, RiderCapacity) VALUES ('1','Bicycle', 1)
INSERT INTO #Toy (HomeId,Category, RiderCapacity) VALUES ('2','Kayak', 2)

SELECT * FROM #Home
SELECT * FROM #Car
SELECT * FROM #Toy



SELECT 
h.HomeId,
h.City,
h.State,
GarageItems = JSON_QUERY('[' + STRING_AGG( GarageItems.DynamicData,',') + ']','$')
FROM
#Home h
INNER JOIN
(
SELECT
HomeId,
JSON_QUERY(Cars,'$') AS DynamicData
FROM
#Home h
CROSS APPLY
(
SELECT 
(
SELECT  
*
FROM
#Car c
WHERE
c.HomeId = h.HomeId
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
) AS Cars
) d 
UNION ALL
SELECT
HomeId,
JSON_QUERY(Cars,'$') AS DynamicData
FROM
#Home h
CROSS APPLY
(
SELECT 
(
SELECT  
*
FROM
#Toy c
WHERE
c.HomeId = h.HomeId
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
) AS Cars
) d
) GarageItems
ON h.HomeId = GarageItems.HomeId
GROUP BY
h.HomeId,
h.City,
h.State
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla


Bu Konudaki Yorumlar
SQL de JSON Islemleri - Yazar: adelphiforumz - 16-04-2019, Saat: 00:42
SQL de JSON Islemleri - Yazar: Tuğrul HELVACI - 16-04-2019, Saat: 08:27
SQL de JSON Islemleri - Yazar: adelphiforumz - 16-04-2019, Saat: 10:27
Cvp: SQL de JSON Islemleri - Yazar: Fesih ARSLAN - 16-04-2019, Saat: 11:48
SQL de JSON Islemleri - Yazar: adelphiforumz - 16-04-2019, Saat: 12:25
Cvp: SQL de JSON Islemleri - Yazar: Bay_Y - 16-04-2019, Saat: 12:26

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MSSQL Network Uzerine Backup ve Restore işlemleri adelphiforumz 5 1.138 19-03-2020, Saat: 13:39
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi