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
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

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



Konuyu Okuyanlar: 1 Ziyaretçi