ayrı değerleri işlev (XQuery)
Yinelenen değerleri belirtilen serisinden siler $arg. Eğer $argboş bir sıra ise işlev boş sırası döndürür.
Sözdizimi
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*
Bağımsız değişkenler
- $arg
Atomik değerleri dizisi.
Açıklamalar
İletilen atomized değerleri her türlü distinct-values() aynı temel türün alt türlerinden olmak zorunda. Kabul edilen temel türleridir destekleyen türleri eqOperasyon. Bu türler, üç yerleşik sayısal türler temel, Tarih ve Saat temel türlerinden, xs: String, xs:boolean ve xdt: untypedAtomic içerir. Türü xdt: untypedAtomic değerler için XS döküm. Bu tür karışımı ise veya diğer türdeki diğer değerleri aktarılırsa, statik bir hata ortaya çıkar.
Sonucu distinct-values() orijinal önem ile geçirilen türlerinden, xs: String of xdt: untypedAtomic, gibi temel türü alır. Giriş statik boş ise, boş ima ve statik bir hata ortaya çıkar.
Değerleri türü xs: String, XQuery varsayılan Unicode CODEPOINT harmanlama karşılaştırılır.
Örnekler
Bu konu çeşitli depolanan xml örnekleri karşı XQuery örnekler sağlar xml AdventureWorks veritabanındaki sütunları yazın. Bu sütunlar genel bakış için bkz: DEL - xml Data Type Representation in the AdventureWorks2008R2 Database.
A.Yinelenen değerler serisinden kaldırmak için distinct-values() işlevi kullanma
Örneğin, telefon numaralarını içeren xml örneğine atanmış bir xml türü değişkeni. Bu değişken kullanır karşı belirtilen XQuery distinct-values() yineleme içermeyen telefon numaralarının bir listesini derlemek için işlevi.
declare @x xml
set @x = '<PhoneNumbers>
<Number>111-111-1111</Number>
<Number>111-111-1111</Number>
<Number>222-222-2222</Number>
</PhoneNumbers>'
-- 1st select
select @x.query('
distinct-values( data(/PhoneNumbers/Number) )
') as result
declare @x xml
set @x = '<PhoneNumbers>
<Number>111-111-1111</Number>
<Number>111-111-1111</Number>
<Number>222-222-2222</Number>
</PhoneNumbers>'
-- 1st select
select @x.query('
distinct-values( data(/PhoneNumbers/Number) )
') as result
Sonuç şudur:
111-111-1111 222-222-2222
111-111-1111 222-222-2222
Aşağıdaki sorgu, sayılar (1, 1, 2) dizisi içinde geçer distinct-values() işlevi. İşlev sonra sırayla yinelenen kaldırır ve diğer iki döndürür.
declare @x xml
set @x = ''
select @x.query('
distinct-values((1, 1, 2))
') as result
declare @x xml
set @x = ''
select @x.query('
distinct-values((1, 1, 2))
') as result
Sorgu 1 2 döndürür.
Uygulama kısıtlamaları
Bu sınırlamalar şunlardır:
Distinct-values() işlevi, tamsayı değerler için xs: decimal eşleştirir.
Distinct-values() işlevi yalnızca yukarıda belirtilen türlerini destekler ve temel türlerinin karışımına desteklemiyor.
Distinct-values() xs: duration değerleri işlevi desteklenmiyor.
Bir harmanlama sağlar sözdizimsel seçeneği desteklenmez.