distinct-values 함수(XQuery)
$arg에 지정된 시퀀스에서 중복 값을 제거합니다. $arg가 빈 시퀀스인 경우 해당 함수는 빈 시퀀스를 반환합니다.
구문
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*
인수
- $arg
원자 값의 시퀀스입니다.
주의
**distinct-values()**에 전달된 모든 유형의 원자화된 값은 같은 기본 유형의 하위 유형이어야 합니다. 허용되는 기본 유형은 eq 작업을 지원하는 유형입니다. 이러한 유형에는 3가지 기본 제공 숫자 기본 유형, 날짜/시간 기본 유형, xs:string, xs:boolean 및 xdt:untypedAtomic이 포함됩니다. xdt:untypedAtomic 유형의 값은 xs:string으로 캐스팅됩니다. 이러한 유형이 혼합되어 있거나 다른 유형의 다른 값이 전달되면 정적 오류가 발생합니다.
**distinct-values()**의 결과 xdt:untypedAtomic의 경우 xs:string과 같이 유형에 전달된 기본 유형을 원래 카디널리티와 함께 수신하게 됩니다. 입력이 정적으로 비어 있으면 비어 있다는 것이 유추되어 정적 오류가 발생합니다.
xs:string 유형의 값은 XQuery 기본 Unicode Codepoint Collation과 비교됩니다.
예
이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 유형 열에 저장된 XML 인스턴스에 대한 XQuery 예를 제공합니다. 이러한 각 열에 대한 개요는 AdventureWorks 데이터베이스의 xml 데이터 형식 표시를 참조하십시오.
1. 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() 함수는 지원되지 않습니다.
데이터 정렬을 제공하는 구문 옵션은 지원되지 않습니다.