distinct-values 函數 (XQuery)
移除 $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 字碼指標定序」相比較。
範例
本主題針對 XML 執行個體提供 XQuery 範例,這些執行個體是儲存在 AdventureWorks 資料庫的各種 xml 類型資料行中。
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() 函數。
不支援提供定序的語法選項。