2013-07-03 4 views
-2

OPs request for an explanation 다음 작품들이 내가 불확실한 점을 던졌다.오라클 산술에서 + 또는 - 연산자 우선 순위가 있습니까?

select sysdate + (interval_difference * 1440) - sysdate 
    from (select systimestamp - (systimestamp - 1) as interval_difference 
      from dual) 

즉, 더하기 또는 빼기 연산자 우선 순위가 있습니까? The documentation1

 
+----------------------------+-------------------------------------------+ 
| Operator     |Operation         | 
+------------------------------------------------------------------------+ 
| +, - (as unary operators) | Identity, negation, location in hierarchy | 
| , PRIOR, CONNECT_BY_ROOT |           | 
+----------------------------+-------------------------------------------+ 
| *,/      | Multiplication, division     | 
+----------------------------+-------------------------------------------+ 
| +, - (as binary operators) | Addition, subtraction, concatenation  | 
| , ||      |           | 
+----------------------------+-------------------------------------------+ 

쿼리 일단 환원을 다음과 같이, 조작 순서를 나열 date + interval - date된다. 그러나 interval - date 부분은 is invalid입니다.

운영자 우선 순위에 따라 2 진수보다 2 진수를 더한 값이 있거나 오라클이 하나의 연산이 유효하지 않고 다른 연산이 유효하지 않음을 알기 쉽기 때문에 연산이 작동합니까? (즉, datetime/interval 연산에 해킹당했습니다.)?

즉, date + interval - date(date + interval) - date으로 실행되고 date + (interval - date)이 아닌 이유는 무엇입니까?

+ 앞에 배치 된 문서는 +가 우선하지만 실제로는 성공하지 못했다는 것을 암시하는 것으로 해석 될 수 있으며이 작업이 성공했다는 사실을 증명할 수도 있습니다. 실행하면 될 수 없다는 것을 제외하고는 다른 방법으로.

+에 우선 순위가있는 정보가 있지만 상황은 모두 있습니다. 이것은 증명할 수있는 방법일까요? 그러나 10g 및 9i의 문서 당연히이다 11.2

1.

답변

6

+- 모두 left-associative이기 때문에 그것이 동일.

  • a + b + c(a + b) + c을 의미합니다.
  • a + b - c(a + b) - c을 의미합니다.
  • a - b + c(a - b) + c을 의미한다. (및 (3 - 2) + 1 != 3 - (2 + 1).)
  • a - b - c(a - b) - c을 의미합니다. (그리고 (3 - 2) - 1 != 3 - (2 - 1).)

(The page that you link to 사실이 언급 :

오라클 표현식 내에서 왼쪽에서 오른쪽으로 같은 우선 순위와 운영을 평가

당신 경우 그리워 쉽게하지만. 찾아야할지 모르겠다.)

+1

이제 나는 정말 어리 석다 .--). 기본 수학을 기억할 수 없다 ... 그리고 네, 단지 문서를 다시 읽고 그것을 보았습니다 .--(감사합니다! – Ben

+3

[PL/SQL 해당] (http://docs.oracle.com/cd/E11882_01/) appdev.112/e25519/fundamentals.htm # sthref127)는 '우선 순위가 동일한 연산자는 특별한 순서가없이 평가됩니다.'라고 말합니다. –

+0

@AlexPoole : Crazy! 당신이 그걸 정말로 의미한다고 생각합니까? – ruakh