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 Database
Azure SQL Managed Instance
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
Note
Dizi genel karakter ve aralık desteği şu anda önizlemede ve yalnızca SQL Server 2025'te (17.x) kullanılabilir.
SQL Server 2025 (17.x), dizi joker karakterlerini desteklemek için ANSI SQL/JSON yol ifadesini genişletir. Dizi joker karakteri, bir JSON dizisindeki son değeri belirtmek için tüm öğeleri, öğe aralığını, öğe listesini veya "son" özel belirtecini belirtmenize olanak tanır. SQL/JSON dizileri sıfır tabanlı dizin kullanır. Joker karakterler içeren SQL/JSON yolu JSON_QUERY, JSON_PATH_EXISTS ve JSON_CONTAINS kullanılabilir.
İş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: