2017-05-18 2 views
1

Xquery에서 fn : string-length 함수를 사용하려고합니다. 이상하게도이 오류가 발생합니다.Xquery에서 fn : string-length를 사용하는 동안 오류가 발생했습니다.

라인 (19), 칼럼 (66)은 {ERR} XP0004은 [{BEA-ERR은} XP0004a] 연산자 "있다"는 타입 {http://www.w3.org/2001/XMLSchema} 정수 {http://www.w3.org/2001/XMLSchema} 스트링 인수 적용되지

내가하려는 것은 XPath 식을 길이를 갖고 값과 비교하는 것입니다. 당신이 따옴표를 제거하면

(fn:string-length($PlaceofDeliveryZoneCodeVal) > "8") 

는 비교가 성공 :

{     
    let $PlaceofDeliveryZoneCodeVal := $getRevenueRequest1/ns0:AlternativeCode/ns0:AlternativeCodeVal/text() 
    return 
    if(fn:string-length($PlaceofDeliveryZoneCodeVal) > "8") then 
     <ns1:GeoId> 
     <ns1:AlternativeCodeVal>{$PlaceofDeliveryZoneCodeVal}</ns1:AlternativeCodeVal> 
     </ns1:GeoId> 
    else() 
} 
+1

참고 사항 : 두 개의 원자를 비교할 때 값 비교는 일반적인 비교 ("> 8"대신 "gt 8")보다 덜 중요합니다. '>'는 실제로 두 개의 시퀀스에 대한 비교를 수행하고 오른쪽에있는 항목보다 왼쪽에있는 항목을 찾는 그들의 데카르트 제품에 대한 실존 적 수량화입니다. 또한 추가 기계 w.r.t가 있습니다. 유형없는 입력. 그런데 많은 엔진이 양면에 정수라는 단 하나의 항목이 있다는 것을 알기에 충분히 똑똑 할 것이며 간단히 비교할 것입니다. –

답변

3

문제는 정수가 따옴표로 포장되어 있기 때문에, 당신은 문자열로 정수를 비교하는 것입니다

(fn:string-length($PlaceofDeliveryZoneCodeVal) > 8) 
관련 문제