EloView 4 쿼리 엔진에서 쿼리 연산자 우선순위 이해하기
우리의 쿼리 엔진은 조건을 처리할 때 표준 연산자 우선순위 규칙을 따릅니다. 연산자는 항상 다음 순서로 평가됩니다:
- 괄호
- NOT
- AND
- OR
이는 쿼리에 괄호 없이 AND와 OR이 모두 포함되어 있을 경우, 시스템이 항상 모든 AND 조건을 평가한 후 OR 조건을 적용함을 의미합니다.
예: 연산자 우선순위가 쿼리에 미치는 영향
원래 쿼리
name:"POS" and name:"Y052016" or name:"Y052051" or name:"Y300084" or name:"Y351040"엔진의 해석
AND가 OR보다 먼저 평가되기 때문에, 쿼리는 다음과 같이 처리됩니다:
code
(name:"POS" and name:"Y052016") or name:"Y052051" or name:"Y300084" or name:"Y351040"결과
이 쿼리는 다음을 반환합니다:
- POS와 Y052016을 모두 포함하는 항목, 또는
- Y052051, Y300084, 또는 Y351040과 일치하는 항목 — POS를 포함하지 않더라도.
의도한 결과 얻기
name:"POS" and (name:"Y052016" or name:"Y052051" or name:"Y300084" or name:"Y351040")이것은 POS가 모든 그룹화된 Y 값에 적용되도록 보장합니다.
추가 예제
원래 쿼리
name:"pos" AND name:"store1" OR name:"store2" OR name:"store3" AND name:"KDS"시스템의 해석
(name:"pos" AND name:"store1") OR name:"store2" OR (name:"store3" AND name:"KDS")이 논리는 OR 조건이 제대로 그룹화되지 않았기 때문에 예기치 않은 결과를 초래할 수 있습니다.
의도된 동작
다음 조건을 만족하는 결과를 찾으려면:
- 이름에 POS가 포함된 항목
- 다음 중 하나 포함: Store1, Store2 또는 Store3
- KDS 또한 포함
쿼리를 다음과 같이 작성해야 합니다:
name:"pos" AND (name:"store1" OR name:"store2" OR name:"store3") AND name:"KDS"모범 사례
AND와 OR을 결합할 때:
- 항상 괄호를 사용하여 조건을 그룹화하십시오.
- 이것은 의도한 논리가 명확하게 표현되도록 하고 예기치 않은 결과를 방지합니다.
- ⚠️ 일부 기존 필터는 새로운 논리에서 작동하지 않을 수 있으며 다시 작성해야 할 수도 있습니다.
용어를 명시적으로 그룹화함으로써, 쿼리가 일관되게 작동하고 매번 정확한 결과를 반환할 것입니다.
Please report any broken links by emailing support@elotouch.com and include a link to the knowledge article