다음을 통해 공유


시퀀스 함수 - distinct-values

적용 대상: SQL Server

$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 기본 유니코드 코드포인트 데이터 정렬과 비교됩니다.

예제

이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 형식 열에 저장된 XML 인스턴스에 대한 XQuery 예제를 제공합니다.

A. 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 함수