Функции с последовательностями — 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 не поддерживается.
Синтаксический параметр для указания параметров сортировки не поддерживается.