논리 연산자¶
논리 연산자는 한 개 또는 두 개의 입력 식에 대한 특정 부울 연산의 결과를 반환합니다. 논리 연산자는 부울 연산자라고도 합니다.
논리 연산자는 조건자(예: 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 |
+-------+-------+-------+-------+