시퀀스 함수 - 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() 함수는 지원되지 않습니다.
데이터 정렬을 제공하는 구문 옵션은 지원되지 않습니다.