Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL이 'TRUE OR TRUE AND FALSE'를 참(TRUE)으로 평가하는 이유

MySQL에서 AND와 OR의 연산 우선순위

MySQL이 'TRUE OR TRUE AND FALSE'라는 조건식을 참(TRUE)으로 평가하는 이유는 연산자 우선순위 때문입니다. SQL에서 AND 연산자가 OR 연산자보다 높은 우선순위를 가지며, 따라서 OR보다 먼저 평가됩니다.

즉, MySQL은 위의 조건식을 다음과 같이 해석합니다. AND 연산 부분이 먼저 처리되는 것입니다.

(TRUE OR (TRUE AND FALSE))

단계별 평가 과정

먼저 괄호 안의 (TRUE AND FALSE) 부분이 평가됩니다. 이 식의 결과는 거짓(FALSE)입니다.

mysql> select (TRUE AND FALSE);
+------------------+
| (TRUE AND FALSE) |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

AND 조건의 결과를 원래 식에 적용하면 다음과 같이 됩니다.

(TRUE OR FALSE)

이제 남은 식을 평가하면 결과는 참(TRUE), 즉 1이 됩니다.

mysql> select (TRUE or FALSE);
+-----------------+
| (TRUE or FALSE) |
+-----------------+
|               1 |
+-----------------+
1 row in set (0.00 sec)

전체 조건식 확인

전체 조건식을 한 번에 실행해도 동일한 결과를 얻을 수 있습니다.

mysql> select (TRUE or TRUE and FALSE);

실행 결과는 다음과 같습니다.

+--------------------------+
| (TRUE or TRUE and FALSE) |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)

정리

결론적으로 MySQL에서는 AND가 OR보다 먼저 평가되기 때문에, 'TRUE OR TRUE AND FALSE'는 '(TRUE OR (TRUE AND FALSE))'로 해석되고, 그 결과 참(TRUE)이 반환됩니다. 혼동을 피하고 싶다면 괄호를 명시적으로 사용하여 의도한 평가 순서를 분명히 하는 것이 좋습니다.