Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: 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 не поддерживается.
Синтаксический параметр для указания параметров сортировки не поддерживается.