논리 연산자¶
논리 연산자는 한 개 또는 두 개의 입력 식에 대한 특정 부울 연산의 결과를 반환합니다. 논리 연산자는 부울 연산자라고도 합니다.
논리 연산자는 조건자(예: WHERE 절에서)로만 사용할 수 있습니다. 입력 식은 조건자여야 합니다.
논리 연산자 목록¶
연산자 |
구문 예 |
설명 |
|---|---|---|
|
|
두 식( |
|
|
식과 일치하지 않습니다. |
|
|
두 식 중 하나와 일치합니다. |
이러한 연산자의 우선 순위(가장 높은 순위에서 가장 낮은 순위로)가 아래에 표시되어 있습니다.
NOT
AND
OR
예¶
다음 예제에서는 논리 연산자를 사용합니다.
테이블 데이터에 대한 쿼리에서 논리 연산자 사용¶
테이블을 만들고 데이터를 삽입합니다.
CREATE OR REPLACE TABLE logical_test1 (id INT, a INT, b VARCHAR);
INSERT INTO logical_test1 (id, a, b) VALUES (1, 8, 'Up');
INSERT INTO logical_test1 (id, a, b) VALUES (2, 25, 'Down');
INSERT INTO logical_test1 (id, a, b) VALUES (3, 15, 'Down');
INSERT INTO logical_test1 (id, a, b) VALUES (4, 47, 'Up');
SELECT * FROM logical_test1;
+----+----+------+
| ID | A | B |
|----+----+------|
| 1 | 8 | Up |
| 2 | 25 | Down |
| 3 | 15 | Down |
| 4 | 47 | Up |
+----+----+------+
단일 논리 연산자를 사용하는 쿼리 실행¶
다양한 쿼리의 WHERE 절에 단일 논리 연산자를 사용하십시오.
SELECT *
FROM logical_test1
WHERE a > 20 AND
b = 'Down';
+----+----+------+
| ID | A | B |
|----+----+------|
| 2 | 25 | Down |
+----+----+------+
SELECT *
FROM logical_test1
WHERE a > 20 OR
b = 'Down';
+----+----+------+
| ID | A | B |
|----+----+------|
| 2 | 25 | Down |
| 3 | 15 | Down |
| 4 | 47 | Up |
+----+----+------+
SELECT *
FROM logical_test1
WHERE a > 20 OR
b = 'Up';
+----+----+------+
| ID | A | B |
|----+----+------|
| 1 | 8 | Up |
| 2 | 25 | Down |
| 4 | 47 | Up |
+----+----+------+
SELECT *
FROM logical_test1
WHERE NOT a > 20;
+----+----+------+
| ID | A | B |
|----+----+------|
| 1 | 8 | Up |
| 3 | 15 | Down |
+----+----+------+
논리 연산자의 우선 순위 표시¶
다음 예제는 논리 연산자의 우선순위를 보여줍니다.
첫 번째 예에서는 AND의 우선 순위가 OR의 우선 순위보다 높음을 보여줍니다. 쿼리는 이러한 조건과 일치하는 행을 반환합니다.
b는Down과 같습니다.
OR
a가8과 같음 ANDb가Up과 같음.
SELECT *
FROM logical_test1
WHERE b = 'Down' OR
a = 8 AND b = 'Up';
+----+----+------+
| ID | A | B |
|----+----+------|
| 1 | 8 | Up |
| 2 | 25 | Down |
| 3 | 15 | Down |
+----+----+------+
WHERE 절에 괄호를 사용하여 우선 순위를 변경할 수 있습니다. 예를 들어, 다음 쿼리는 이러한 조건과 일치하는 행을 반환합니다.
b가Down과 같음 ORa가8과 같음.
AND
b는Up과 같습니다.
SELECT *
FROM logical_test1
WHERE (b = 'Down' OR a = 8) AND b = 'Up';
+----+---+----+
| ID | A | B |
|----+---+----|
| 1 | 8 | Up |
+----+---+----+
다음 예에서는 NOT의 우선 순위가 AND의 우선 순위보다 높음을 보여줍니다. 예를 들어, 다음 쿼리는 이러한 조건과 일치하는 행을 반환합니다.
a는15와 같지 않습니다.
AND
b는Down과 같습니다.
SELECT *
FROM logical_test1
WHERE NOT a = 15 AND b = 'Down';
+----+----+------+
| ID | A | B |
|----+----+------|
| 2 | 25 | Down |
+----+----+------+
WHERE 절에 괄호를 사용하여 우선 순위를 변경할 수 있습니다. 예를 들어, 다음 쿼리는 이 두 조건에 모두 일치하지 않는 행을 반환합니다.
a는15와 같습니다.
AND
b는Down과 같습니다.
SELECT *
FROM logical_test1
WHERE NOT (a = 15 AND b = 'Down');
+----+----+------+
| ID | A | B |
|----+----+------|
| 1 | 8 | Up |
| 2 | 25 | Down |
| 4 | 47 | Up |
+----+----+------+
부울 값에 대한 쿼리에서 논리 연산자 사용¶
테이블을 만들고 데이터를 삽입합니다.
CREATE OR REPLACE TABLE logical_test2 (a BOOLEAN, b BOOLEAN);
INSERT INTO logical_test2 VALUES (0, 1);
SELECT * FROM logical_test2;
+-------+------+
| A | B |
|-------+------|
| False | True |
+-------+------+
다음 쿼리는 OR 연산자를 사용하여 a 또는 b 가 TRUE 인 행을 반환합니다.
SELECT a, b FROM logical_test2 WHERE a OR b;
+-------+------+
| A | B |
|-------+------|
| False | True |
+-------+------+
다음 쿼리는 AND 연산자를 사용하여 a 및 b 가 모두 TRUE 인 행을 반환합니다.
SELECT a, b FROM logical_test2 WHERE a AND b;
+---+---+
| A | B |
|---+---|
+---+---+
다음 쿼리는 AND 연산자와 NOT 연산자를 사용하여 b 가 TRUE 이고 a 가 FALSE 인 행을 반환합니다.
SELECT a, b FROM logical_test2 WHERE b AND NOT a;
+-------+------+
| A | B |
|-------+------|
| False | True |
+-------+------+
다음 쿼리는 AND 연산자와 NOT 연산자를 사용하여 a 가 TRUE 이고 b 가 FALSE 인 행을 반환합니다.
SELECT a, b FROM logical_test2 WHERE a AND NOT b;
+---+---+
| A | B |
|---+---|
+---+---+
논리 연산자에 대한 “진리 테이블” 표시¶
다음 몇 가지 예제는 부울 열의 논리 연산자에 대한 ‘진리 테이블’을 보여줍니다. Snowflake에서 부울 값의 동작에 대한 자세한 내용은 3진 논리 섹션을 참조하십시오.
새 테이블과 데이터를 만듭니다.
CREATE OR REPLACE TABLE logical_test3 (x BOOLEAN);
INSERT INTO logical_test3 (x) VALUES
(False),
(True),
(NULL);
다음은 OR 연산자에 대한 진리표를 보여줍니다.
SELECT x AS "OR",
x OR False AS "FALSE",
x OR True AS "TRUE",
x OR NULL AS "NULL"
FROM logical_test3;
+-------+-------+------+------+
| OR | FALSE | TRUE | NULL |
|-------+-------+------+------|
| False | False | True | NULL |
| True | True | True | True |
| NULL | NULL | True | NULL |
+-------+-------+------+------+
다음은 AND 연산자에 대한 진리표를 보여줍니다.
SELECT x AS "AND",
x AND False AS "FALSE",
x AND True AS "TRUE",
x AND NULL AS "NULL"
FROM logical_test3;
+-------+-------+-------+-------+
| AND | FALSE | TRUE | NULL |
|-------+-------+-------+-------|
| False | False | False | False |
| True | False | True | NULL |
| NULL | False | NULL | NULL |
+-------+-------+-------+-------+