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

MySQL에서 AND와 && 연산자의 차이점 완벽 정리

MySQL에서 AND와 &&의 차이점은 무엇일까?

AND와 && 사이에는 단 하나의 차이점만 존재합니다. 바로 AND는 SQL 표준 문법이라는 점이고, &&는 MySQL 고유의 전용 문법이라는 점입니다.

이 부분을 제외하면 두 연산자 간에 어떠한 차이도 없습니다. 아래에서 다양한 조건별로 하나씩 살펴보겠습니다.

AND와 &&의 기본 동작 방식

AND와 &&의 연산 결과는 항상 1 또는 0으로 반환됩니다. 두 연산자 모두 논리 연산자(logical operator)이기 때문에, 피연산자가 여러 개 있을 때 그중 하나라도 0이면 결과는 0이 되고, 모두 0이 아니면 결과는 1이 됩니다.

다음 예제를 통해 AND와 &&의 실제 동작을 직접 확인해 보겠습니다.

케이스 1: 두 피연산자가 모두 1인 경우

케이스 1(a): 두 피연산자가 모두 1일 때 AND를 사용한 경우입니다.

mysql> select 1 AND 1 as Result;

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

+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

케이스 1(b): 같은 조건에서 &&를 사용한 경우입니다.

mysql> select 1 && 1 as Result;

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

+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

케이스 2: 피연산자 중 하나가 0인 경우

케이스 2(a): 피연산자 중 하나라도 0이면 결과는 0이 됩니다. AND를 사용한 예시입니다.

mysql> select 1 AND 0 as Result;

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

+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

케이스 2(b): 같은 조건에서 &&를 사용한 경우입니다.

mysql> select 1 && 0 as Result;

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

+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

케이스 3: 피연산자 중 하나가 NULL인 경우

NULL이 포함된 경우의 동작도 살펴보겠습니다.

케이스 3(a): 피연산자 중 하나가 NULL이면 결과 역시 NULL이 됩니다. AND를 사용한 예시입니다.

mysql> select NULL AND 1 as Result;

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

+--------+
| Result |
+--------+
|   NULL |
+--------+
1 row in set (0.00 sec)

케이스 3(b): 같은 조건에서 &&를 사용한 경우입니다.

mysql> select NULL && 1 as Result;

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

+--------+
| Result |
+--------+
|   NULL |
+--------+
1 row in set (0.00 sec)

참고: 0과 1 외의 숫자 처리

위에서 설명한 내용은 1과 0에만 국한되지 않습니다. 0이 아닌 모든 값은 참(true)으로 간주됩니다. 따라서 음수 두 개를 AND 또는 &&로 연산하면 결과는 1이 됩니다.

음수를 사용한 예시를 살펴보겠습니다.

mysql> select -10 AND -30 as Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.04 sec)
mysql> select -10 && -30 as Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

위 예시에서 값 중 하나라도 0이면 AND와 && 모두 결과가 0이 됩니다.

mysql> select -10 AND 0 as Result;
+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

양수를 사용한 경우도 마찬가지입니다.

mysql> select 10 AND 30 as Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)
mysql> select 10 && 30 as Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

여기서도 피연산자 중 하나가 0이 되면 결과는 0으로 반환됩니다.

mysql> select 10 and 0 as Result;
+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)
mysql> select 10 && 0 as Result;
+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

정리

결론적으로 MySQL에서 AND와 &&는 기능적으로 완전히 동일하게 동작합니다. 다만 이식성(portability)과 표준 준수 측면에서 SQL 표준인 AND를 사용하는 것이 권장됩니다. &&는 MySQL에서만 지원되는 문법이므로, 다른 데이터베이스 시스템으로 코드를 옮길 때 호환성 문제가 발생할 수 있기 때문입니다.