Seriler Üzerindeki İşlevler - farklı değerler

Şunlar için geçerlidir: SQL Server

$arg tarafından belirtilen diziden tekrarlanan değerleri kaldırır. Eğer $arg boş bir dizi, fonksiyon boş diziyi döndürür.

Syntax

  
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*  

Arguments

$arg
Atomik değerler dizisi.

Remarks

Farklı-değerler()'ye aktarılan atomize değerlerin tüm türleri aynı baz tipinin alt tipleri olmalıdır. Kabul edilen temel tipler, eq işlemini destekleyen türlerdir. Bu türlerde üç yerleşik sayısal taban türü, tarih/saat temel türleri, xs:string, xs:boolean ve xdt:untypedAtomic bulunur. xdt:untypedAtomic tipindeki değerler xs:string'e aktarılır. Bu türlerin bir karışımı varsa veya diğer türlerin diğer değerleri geçirilirse, statik bir hata oluşur.

distinct-values() sonucu, orijinal kardinalite ile geçilen tiplerin temel tipini, örneğin xdt:untypedAtomic durumunda xs:string alır. Eğer girdi statik olarak boşsa, boş ima edilir ve statik bir hata ortaya çıkar.

xs:string tipindeki değerler, XQuery varsayılan Unicode Codepoint Collation ile karşılaştırılır.

Examples

Bu konu, AdventureWorks veritabanındaki çeşitli xml türü sütunlarında depolanan XML örneklerine karşı XQuery örnekleri sağlar.

A. Dizideki tekrarlanan değerleri çıkarmak için distinct-values() fonksiyonunun kullanılması

Bu örnekte, telefon numaraları içeren bir XML örneği bir xml tipi değişkene atanır. Bu değişkene karşı belirtilen XQuery, farklı değerler() fonksiyonunu kullanarak çoğaltma içeren telefon numaralarının bir listesini derler.

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ç şu şekildedir:

111-111-1111 222-222-2222    

Aşağıdaki sorguda, bir sayı dizisi (1, 1, 2) farklı-değerler() fonksiyonuna iletilir. Fonksiyon daha sonra dizideki kopyayı kaldırır ve diğer ikisini geri getirir.

declare @x xml  
set @x = ''  
select @x.query('  
  distinct-values((1, 1, 2))  
') as result  

Sorgu 1 2 döndürüyor.

Uygulama Sınırlamaları

Sınırlamalar şunlardır:

  • Distinct-values() fonksiyonu, tam sayı değerlerini xs:ondalık olarak eşler.

  • Distinct-values() fonksiyonu yalnızca daha önce bahsedilen tipleri destekler ve temel tiplerin karışımını desteklemez.

  • xs:duration değerlerindeki distinct-values() fonksiyonu desteklenmez.

  • Harmanlama sağlayan söz dizimsel seçenek desteklenmez.