다음을 통해 공유


부울 값 함수 - not 함수

적용 대상:SQL Server

$arg 유효 부울 값이 false이면 TRUE를 반환하고, 유효한 $arg 부울 값이 true이면 FALSE를 반환합니다.

구문

  
fn:not($arg as item()*) as xs:boolean  

인수

$arg
유효 부울 값이 있는 항목의 시퀀스입니다.

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

A. not() XQuery 함수를 사용하여 카탈로그 설명에 Specifications 요소가 포함되지 <않은 제품 모델을 찾습니다> .

다음 쿼리는 카탈로그 설명에 요소가 포함되지 않은 제품 모델에 대한 제품 모델 ID가 포함된 XML을 <Specifications> 생성합니다.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)  
SELECT ProductModelID, CatalogDescription.query('  
       <Product   
           ProductModelID="{ sql:column("ProductModelID") }"  
        />  
') as Result  
FROM Production.ProductModel  
WHERE CatalogDescription.exist('  
     /pd:ProductDescription[not(pd:Specifications/*)]  '  
     ) = 0  

이전 쿼리의 다음 사항에 유의하세요.

  • 문서에서 네임스페이스를 사용하므로 샘플에서는 WITH NAMESPACES 문을 사용합니다. 또 다른 옵션은 XQuery 프롤로그에서 네임스페이스 선언 키워드를 사용하여 접두사를 정의하는 것입니다.

  • 그런 다음, 쿼리는 요소와 해당 ProductModelID 특성을 포함하는>Product< XML을 생성합니다.

  • WHERE 절은 exist() 메서드(XML 데이터 형식)를 사용하여 행을 필터링합니다. Specification> 자식 요소가 없는 ProductDescription> 요소가 있는 <경우 exist() 메서드는 <True를 반환합니다. not() 함수를 사용합니다.

각 제품 모델 카탈로그 설명에 Specifications 요소가 포함되어 있으므로 이 결과 집합은 <비어 있습니다> .

B. not() XQuery 함수를 사용하여 MachineHours 특성이 없는 작업 센터 위치 검색

다음 쿼리는 지침 열에 대해 지정됩니다. 이 열에는 제품 모델에 대한 제조 지침이 저장됩니다.

특정 제품 모델의 경우 쿼리는 MachineHours를 지정하지 않는 작업 센터 위치를 검색합니다. 즉, Location> 요소에 대해 MachineHours 특성이 <지정되지 않았습니다.

SELECT ProductModelID, Instructions.query('  
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;  
     for $i in /AWMI:root/AWMI:Location[not(@MachineHours)]  
     return  
       <Location LocationID="{ $i/@LocationID }"   
                   LaborHrs="{ $i/@LaborHours }" >  
        </Location>  
') as Result  
FROM Production.ProductModel  
WHERE ProductModelID=7   

앞의 쿼리에서 다음 사항에 유의하세요.

  • XQuery 프롤로그declarenamespaceAdventure Works 제조 지침 네임스페이스 접두사를 정의합니다. 제조 지침 문서에 사용된 동일 네임스페이스를 나타냅니다.

  • 쿼리에서 not(@MachineHours) 조건자는 MachineHours 특성이 없으면 True를 반환합니다.

결과는 다음과 같습니다.

ProductModelID Result   
-------------- --------------------------------------------  
7              <Location LocationID="30" LaborHrs="1"/>  
               <Location LocationID="50" LaborHrs="3"/>  
               <Location LocationID="60" LaborHrs="4"/>  

구현 제한 사항

제한 사항은 다음과 같습니다.

  • not() 함수는 xs:boolean 또는 node()*또는 빈 시퀀스 형식의 인수만 지원합니다.

참고 항목

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