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 예를 제공합니다.

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() 함수는 지원되지 않습니다.

  • 데이터 정렬을 제공하는 구문 옵션은 지원되지 않습니다.

참고 항목

참조

xml 데이터 형식에 대한 XQuery 함수