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.
İşlenen öğeler dizisinde bağlam öğesinin konumunu gösteren bir tam sayı değeri döndürür.
Sözdizimi
fn:position() as xs:integer
Açıklamalar
SQL Server'da, fn:position() yalnızca bağlama bağlı bir önlem bağlamında kullanılabilir. Özellikle, yalnızca parantez içinde kullanılabilir ([ ]). Bu fonksiyonla karşılaştırmak, statik tip çıkarımı sırasında kardinaliteyi azaltmaz.
Örnekler
Bu konu, veritabanındaki çeşitli xml türü sütunlarında AdventureWorks2025 depolanan XML örneklerine karşı XQuery örnekleri sağlar.
A. konum() XQuery fonksiyonunun ilk iki ürün özelliğini geri almak için kullanılması
Aşağıdaki sorgu, ürün modeli kataloğu açıklamasından elemanın ilk iki özelliğini, yani ilk iki alt elemanı <Features> alır. Daha fazla özellik varsa, sonuca bir <there-is-more/> unsur ekliyor.
SELECT CatalogDescription.query('
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
<Product>
{ /pd:ProductDescription/@ProductModelID }
{ /pd:ProductDescription/@ProductModelName }
{
for $f in /pd:ProductDescription/pd:Features/*[position()<=2]
return
$f
}
{
if (count(/pd:ProductDescription/pd:Features/*) > 2)
then <there-is-more/>
else ()
}
</Product>
') as x
FROM Production.ProductModel
WHERE CatalogDescription is not null
Önceki sorgudan aşağıdakilere dikkat edin:
XQuery Prolog'dakiisim alanı anahtar kelimesi, sorgu gövdesinde kullanılan bir namespace önekini tanımlar.
Sorgu gövdesi, ProductModelID ve ProductModelName özelliklerine sahip bir <Ürün> öğesi olan ve ürün özelliklerinin alt öğe olarak döndürüldüğü XML oluşturur.
Pozisyon() fonksiyonu, önlemde Özellikler> alt öğesinin <bağlamdaki konumunu belirlemek için kullanılır. Eğer birinci veya ikinci filmse, geri verilir.
IF ifadesi, ürün kataloğunda ikiden fazla özellik varsa sonuca 'there-is-more/> öğesi ekler<.
Tüm ürün modellerinin katalog açıklamaları tabloda saklanmadığı için, WHERE cümlesi CatalogDescriptions'ın NULL olduğu satırları atmak için kullanılır.
Bu kısmi bir sonuçdur:
<Product ProductModelID="19" ProductModelName="Mountain 100">
<p1:Warranty xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
<p1:WarrantyPeriod>3 year</p1:WarrantyPeriod>
<p1:Description>parts and labor</p1:Description>
</p1:Warranty>
<p2:Maintenance xmlns:p2="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
<p2:NoOfYears>10</p2:NoOfYears>
<p2:Description>maintenance contact available through your dealer or
any AdventureWorks retail store.</p2:Description>
</p2:Maintenance>
<there-is-more/>
</Product>
...