Поделиться через


Функции с последовательностями — distinct-values

Применимо к:SQL Server

Удаляет повторяющиеся значения из последовательности, указанной $arg. Если $arg является пустой последовательностью, функция возвращает пустую последовательность.

Синтаксис

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

Аргументы

$arg
Последовательность атомарных значений.

Замечания

Все типы атомизованных значений, передаваемых в разные значения() должны быть подтипами одного базового типа. Допустимые базовые типы — это типы, поддерживающие операцию eq . Эти типы включают в себя три встроенных базовых численных типа, базовые типы даты-времени, а также xs:string, xs:boolean, xdt:untypedAtomic. Значения типа xdt:untypedAtomic приводятся к типу xs:string. Если имеется смесь этих типов или передаются значения других типов, возникает статическая ошибка.

Результат различающихся значений() получает базовый тип переданного типа в типах, таких как xs:string в случае xdt:untypedAtomic, с исходным кратностью. Если вход статически пуст, подразумевается пустое значение, и формируется статическая ошибка.

Значения типа xs:string сравниваются в параметрах сортировки кодовых точек Юникода запроса XQuery по умолчанию.

Примеры

В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типа XML в базе данных AdventureWorks.

О. Использование функции 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() поддерживает только упомянутые ранее типы и не поддерживает смесь базовых типов.

  • Функция distinct-values() в значениях xs:duration не поддерживается.

  • Синтаксический параметр для указания параметров сортировки не поддерживается.

См. также

Функции XQuery для типа данных XML