Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics (serverless SQL pool only)
SQL database in Microsoft Fabric
JSON nesnelerinin özelliklerine başvurmak için JSON yol ifadelerini kullanın.
Aşağıdaki işlevleri çağırırken bir yol ifadesi sağlamanız gerekir.
- JSON verilerinin ilişkisel bir görünümünü oluşturmak için OPENJSON'u çağırdığınızda.
- JSON metninden bir değer ayıklamak için JSON_VALUE çağırdığınızda.
- JSON nesnesini veya dizisini ayıklamak için JSON_QUERY çağırdığınızda.
- JSON dizesindeki bir özelliğin değerini güncelleştirmek için JSON_MODIFY çağırdığınızda.
Yol ifadesinin bölümleri
Yol ifadesinin iki bileşeni vardır.
Yol modu
Yol ifadesinin başında, isteğe bağlı olarak lax veya strict anahtar sözcüğünü belirterek yol modunu bildirin. Varsayılan değer: lax.
Modda
lax, yol ifadesi bir hata içeriyorsa işlev boş değerler döndürür. Örneğin, değerini$.nameisterseniz ve JSON metni birnameanahtar içermiyorsa işlev null döndürür, ancak hata oluşturmaz.Modda
strict, yol ifadesi bir hata içeriyorsa işlev bir hata oluşturur.
Aşağıdaki sorgu yol ifadesinde modu açıkça belirtir lax .
DECLARE @json AS NVARCHAR (MAX);
SET @json = N'{ ... }';
SELECT *
FROM OPENJSON (@json, N'lax $.info');
Path
İsteğe bağlı yol modu bildiriminden sonra yolun kendisini belirtin.
Dolar işareti (
$), bağlam öğesini temsil eder.Özellik yolu, bir adım kümesidir. Yol adımları aşağıdaki öğeleri ve işleçleri içerebilir.
Anahtar adları. Örneğin,
$.nameve$."first name". Anahtar adı dolar işaretiyle başlıyorsa veya boşluk veya nokta işleçleri.gibi özel karakterler içeriyorsa, tırnak içine alın.Dizi öğeleri. Örneğin,
$.product[3]. Diziler sıfır tabanlıdır.Nokta işleci (
.), bir nesnenin üyesini gösterir. Örneğin,$.people[1].surnameiçindesurname,peopleöğesinin alt öğesidir.Giriş bir JSON türü değeriyse dizi joker karakteri ve aralık aramaları da desteklenir.
Dizi joker karakter kullanımı ve aralık desteği
ANSI SQL/JSON yol ifadeleri bir dizi joker karakterini destekler. Dizi joker kartı, tüm elemanları, bir eleman aralığını, bir eleman listesini veya JSON dizisinin son değerini belirtmek için özel tokenı last belirtmenize olanak tanır. SQL/JSON dizileri sıfır tabanlı indeksler kullanır.
JSON_QUERY, JSON_PATH_EXISTS ve JSON_CONTAINS'de joker kartlarla SQL/JSON yollarını kullanabilirsiniz.
İşlev SQL/JSON yol ifadesini desteklerken JSON_VALUE , işlevin JSON_VALUE dönüş değeri bir SQL skaler değeridir ve bu nedenle işlev her zaman bir JSON nesnesine veya dizisine işaret eden herhangi bir SQL/JSON yolu için döndürür NULL . Dizi joker karakterleri yalnızca giriş JSON türünde olduğunda desteklenir.
Aşağıdaki söz dizimi joker karakterin, aralığın ve özel belirtecin last nasıl kullanılabileceğini gösterir:
path[elements ]
elements ::= {
*
| number
| number to number
| last
| {number...[, number] }
}
Özel belirteç last sayı değeri yerine kullanılabilir. Bir aralık belirtilirse, aralığın artan sırada belirtilmesi gerekir.
Bazı geçerli SQL/JSON yol ifadelerine örnekler:
| Path | Description |
|---|---|
$[*] |
Tüm elementler |
$[0] |
İlk öğe |
$[0 to 2] |
İlk üç öğe |
$[last] |
Son öğe |
$[last, 0] |
Invalid |
$[last, 2, 0, last] |
Invalid |
$.creditcards[0].type |
Dizideki ilk öğenin creditcards type özellik değerini verir |
$.credit_cards[*].type |
Dizideki tüm öğelerin creditcards type özellik değerini verir |
$.credit_cards[0, 2].type |
Dizideki birinci ve üçüncü öğenin creditcards type özellik değerini verir |
$.credit_cards[1 to 3].type |
Dizideki ikinci ile dördüncü öğenin creditcards tür özelliği değerini verir |
$.credit_cards[last].type |
Dizideki son öğenin creditcards type özellik değerini verir |
$.credit_cards[last, 0].type |
Dizideki son ve ilk öğenin creditcards type özellik değerini verir |
Examples
Bu bölümdeki örnekler aşağıdaki JSON metnine başvurur.
{
"people": [{
"name": "John",
"surname": "Doe"
}, {
"name": "Jane",
"surname": null,
"active": true
}]
}
Aşağıdaki tabloda yol ifadelerinin bazı örnekleri gösterilmektedir.
| Yol ifadesi | Value |
|---|---|
$.people[0].name |
John |
$.people[1] |
{ "name": "Jane", "surname": null, "active": true } |
$.people[1].surname |
NULL |
$ |
{ "people": [ { "name": "John", "surname": "Doe" },{ "name": "Jane", "surname": null, "active": true } ] } |
$.people[last].name |
["Jane"] |
$.people[0 to 1].name |
["John","Jane"] |
$.people[0, 1].name |
["John","Jane"] |
Yerleşik işlevler yinelenen yolları nasıl işler?
JSON metni yinelenen özellikler içeriyorsa (örneğin, aynı düzeyde aynı ada sahip iki anahtar) JSON_VALUE ve JSON_QUERY işlevleri yalnızca yolla eşleşen ilk değeri döndürür. Yinelenen anahtarlar içeren bir JSON nesnesini ayrıştırmak ve tüm değerleri döndürmek için, aşağıdaki örnekte gösterildiği gibi kullanın OPENJSON.
DECLARE @json AS NVARCHAR (MAX);
SET @json = N'{"person":{"info":{"name":"John", "name":"Jack"}}}';
SELECT value
FROM OPENJSON (@json, '$.person.info');
JSON hakkında daha fazla bilgi edinin
Yerleşik JSON desteğine görsel bir giriş için aşağıdaki videoya bakın: