分享方式:


序列的相關函式 - distinct-values

適用於:SQL Server

從$arg 指定的 序列中移除重複的值。 如果 $arg 是空序列,函式會傳回空序列。

語法

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

引數

$arg
不可部分完成值的順序。

備註

傳遞至 distinct-values() 的所有原子化數值型別都必須是相同基底類型的子類型。 接受的基底類型是支援 eq 作業的類型 。 這些類型包括三個內建數值基底類型、日期/時間基底類型、xs:string、xs:boolean 和 xdt:untypedAtomic。 xdt:untypedAtomic 類型的值會轉換成 xs:string。 如果混合這些類型,或傳遞其他類型的其他值,則會引發靜態錯誤。

distinct-values() 的結果 會接收傳入型別的基底型別,例如 xdt:untypedAtomic 的 xs:string,其原始基數為 。 如果輸入是靜態空白的,則會隱含空白,並引發靜態錯誤。

xs:string 類型的值會與 XQuery 預設 Unicode Codepoint 定序進行比較。

範例

本主題針對 AdventureWorks 資料庫中各種 xml 類型資料行中儲存的 XML 實例,提供 XQuery 範例。

A. 使用 distinct-values() 函式從序列中移除重複的值

在此範例中,包含電話號碼的 XML 實例會指派給 xml 類型變數。 針對此變數指定的 XQuery 會使用 distinct-values() 函式來編譯不包含重複專案的電話號碼清單。

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  

以下是結果:

111-111-1111 222-222-2222    

在下列查詢中,會將數位序列 (1, 1, 2) 傳入 distinct-values() 函式。 然後函式會移除序列中的重複專案,並傳回其他兩個。

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

查詢會傳回 1 2。

實作限制

以下是限制:

  • distinct-values() 函式會將 整數值對應至 xs:decimal。

  • distinct-values() 式僅支援先前提及的類型,而且不支援基底類型的混合。

  • 不支援 xs:duration 值上的 distinct-values() 函式。

  • 不支援提供定序的語法選項。

另請參閱

針對 xml 資料類型的 XQuery 函式