Bagikan melalui


Fungsi pada Urutan - nilai yang berbeda

Berlaku untuk:SQL Server

Menghapus nilai duplikat dari urutan yang ditentukan oleh $arg. Jika $arg adalah urutan kosong, fungsi mengembalikan urutan kosong.

Sintaks

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

Argumen

$arg
Urutan nilai atomik.

Keterangan

Semua jenis nilai yang diatomisasi yang diteruskan ke distinct-values() harus berupa subjenis dari jenis dasar yang sama. Jenis dasar yang diterima adalah jenis yang mendukung operasi eq . Jenis ini termasuk tiga jenis dasar numerik bawaan, jenis dasar tanggal/waktu, xs:string, xs:boolean, dan xdt:untypedAtomic. Nilai jenis xdt:untypedAtomic ditransmisikan ke xs:string. Jika ada campuran jenis ini, atau jika nilai lain dari jenis lain diteruskan, kesalahan statis akan muncul.

Hasil dari distinct-values() menerima jenis dasar dari jenis yang diteruskan, seperti xs:string dalam kasus xdt:untypedAtomic, dengan kardinalitas asli. Jika input kosong secara statis, kosong tersirat dan kesalahan statis dimunculkan.

Nilai jenis xs:string dibandingkan dengan Kolase Codepoint Unicode default XQuery.

Contoh

Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.

J. Menggunakan fungsi distinct-values() untuk menghapus nilai duplikat dari urutan

Dalam contoh ini, instans XML yang berisi nomor telepon ditetapkan ke variabel jenis xml . XQuery yang ditentukan terhadap variabel ini menggunakan fungsi distinct-values() untuk mengkompilasi daftar nomor telepon yang tidak berisi duplikat.

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  

Ini adalah hasilnya:

111-111-1111 222-222-2222    

Dalam kueri berikut, urutan angka (1, 1, 2) diteruskan ke fungsi distinct-values(). Fungsi kemudian menghapus duplikat secara berurutan dan mengembalikan dua lainnya.

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

Kueri mengembalikan 1 2.

Batasan Implementasi

Ini adalah batasannya:

  • Fungsi distinct-values() memetakan nilai bilangan bulat ke xs:desimal.

  • Fungsi distinct-values() hanya mendukung jenis yang disebutkan sebelumnya dan tidak mendukung campuran jenis dasar.

  • Fungsi distinct-values() pada nilai xs:duration tidak didukung.

  • Opsi syntactic yang menyediakan kolase tidak didukung.

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml