not 함수(XQuery)
$arg의 유효한 부울 값이 False인 경우 TRUE를 반환하고 $arg의 유효한 부울 값이 True인 경우 FALSE를 반환합니다.
구문
fn:not($arg as item()*) as xs:boolean
인수
- $arg
유효한 부울 값이 있는 항목의 시퀀스입니다.
예
이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 유형 열에 저장된 XML 인스턴스에 대한 XQuery 예를 제공합니다. 이러한 각 열에 대한 개요는 AdventureWorks 데이터베이스의 xml 데이터 형식 표시를 참조하십시오.
1. not() XQuery 함수를 사용하여 카탈로그 설명에 <Specifications> 요소가 포함되지 않은 제품 모델 찾기
다음 쿼리는 카탈로그 설명에 <Specifications> 요소가 포함되지 않은 제품 모델에 대한 제품 모델 ID가 포함되는 XML을 생성합니다.
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 프롤로그에서 declare namespace를 사용하여 접두사를 정의하는 것입니다.
그런 다음 쿼리는 <Product> 요소와 해당 ProductModelID 특성을 포함하는 XML을 생성합니다.
WHERE 절에는 행을 필터링하기 위해 exist() 메서드(XML 데이터 형식)가 사용됩니다. exist() 메서드는 <Specification> 자식 요소가 없는 <ProductDescription> 요소가 있는 경우 True를 반환합니다. 여기에서는 not() 함수가 사용되었습니다.
이 결과 집합은 각 제품 모델 카탈로그 설명에 <Specifications> 요소가 포함되어 있기 때문에 비어 있습니다.
2. not() XQuery 함수를 사용하여 MachineHours 특성이 없는 작업 센터 위치 검색
다음 쿼리는 Instructions 열에 대해 지정되었습니다. 이 열에는 제품 모델에 대한 제조 지침이 저장됩니다.
특정 제품 모델에 대해 이 쿼리는 MachineHours를 지정하지 않는 작업 센터 위치를 검색합니다. 즉, MachineHours 특성은 <Location> 요소에 대해 지정되어 있지 않습니다.
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 프롤로그의 declarenamespace는 Adventure 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()* 또는 빈 시퀀스만 지원합니다.