Snowpark Migration Accelerator: Where¶
설명¶
지정된 조건에 따라 쿼리 또는 하위 쿼리에서 반환된 데이터를 필터링합니다. (Databricks SQL Language Reference WHERE)
WHERE 절은 충족해야 하는 특정 조건을 정의하여 데이터를 필터링합니다. (Snowflake SQL Language Reference WHERE)
구문¶
WHERE <boolean_expression>
...
WHERE <predicate>
[ ... ]
샘플 소스 패턴¶
설정 데이터¶
Databricks¶
CREATE TABLE person (id INT, name STRING, age INT);
INSERT INTO person VALUES
(100, 'John', 30),
(200, 'Mary', NULL),
(300, 'Mike', 80),
(400, 'Dan' , 50);
Snowflake¶
CREATE TABLE person (id INT, name STRING, age INT);
INSERT INTO person VALUES
(100, 'John', 30),
(200, 'Mary', NULL),
(300, 'Mike', 80),
(400, 'Dan' , 50);
패턴 코드¶
Databricks¶
-- 1. Comparison operator in `WHERE` clause.
SELECT * FROM person WHERE id > 200 ORDER BY id;
-- 2. Comparison and logical operators in `WHERE` clause.
SELECT * FROM person WHERE id = 200 OR id = 300 ORDER BY id;
-- 3. IS NULL expression in `WHERE` clause.
SELECT * FROM person WHERE id > 300 OR age IS NULL ORDER BY id;
-- 4. Function expression in `WHERE` clause.
SELECT * FROM person WHERE length(name) > 3 ORDER BY id;
-- 5. `BETWEEN` expression in `WHERE` clause.
SELECT * FROM person WHERE id BETWEEN 200 AND 300 ORDER BY id;
-- 6. Scalar Subquery in `WHERE` clause.
SELECT * FROM person WHERE age > (SELECT avg(age) FROM person);
-- 7. Correlated Subquery in `WHERE` clause.
SELECT * FROM person AS parent
WHERE EXISTS (SELECT 1 FROM person AS child
WHERE parent.id = child.id
AND child.age IS NULL);
WHERE절에서 비교 연산자(예: =, >, <, >=, <=)를 사용하여 데이터를 필터링합니다.
ID |
NAME |
AGE |
|---|---|---|
300 |
Mike |
80 |
400 |
Dan |
50 |
WHERE절에 비교 연산자(=, <, >, <=, >=, !=)와 논리 연산자(AND, OR, NOT)를 사용하여 데이터를 필터링합니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
300 |
Mike |
80 |
WHERE절에IS NULL을 사용하여 null 값을 확인합니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
400 |
Dan |
50 |
WHERE절 내에서 함수 식 사용.
ID |
NAME |
AGE |
|---|---|---|
100 |
John |
30 |
200 |
Mary |
Null |
300 |
Mike |
80 |
WHERE절에서BETWEEN연산자를 사용하여 값 범위를 기준으로 데이터를 필터링합니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
300 |
Mike |
80 |
WHERE절 내에서 스칼라 하위 쿼리 사용.
ID |
NAME |
AGE |
|---|---|---|
300 |
Mike |
80 |
외부 쿼리의 열을 참조하는
WHERE절의 하위 쿼리입니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
Snowflake¶
-- 1. Comparison operator in `WHERE` clause.
SELECT * FROM person WHERE id > 200 ORDER BY id;
-- 2. Comparison and logical operators in `WHERE` clause.
SELECT * FROM person WHERE id = 200 OR id = 300 ORDER BY id;
-- 3. IS NULL expression in `WHERE` clause.
SELECT * FROM person WHERE id > 300 OR age IS NULL ORDER BY id;
-- 4. Function expression in `WHERE` clause.
SELECT * FROM person WHERE length(name) > 3 ORDER BY id;
-- 5. `BETWEEN` expression in `WHERE` clause.
SELECT * FROM person WHERE id BETWEEN 200 AND 300 ORDER BY id;
-- 6. Scalar Subquery in `WHERE` clause.
SELECT * FROM person WHERE age > (SELECT avg(age) FROM person);
-- 7. Correlated Subquery in `WHERE` clause.
SELECT * FROM person AS parent
WHERE EXISTS (SELECT 1 FROM person AS child
WHERE parent.id = child.id
AND child.age IS NULL);
WHERE절에서 비교 연산자(예: =, >, <, >=, <=)를 사용하여 데이터를 필터링합니다.
ID |
NAME |
AGE |
|---|---|---|
300 |
Mike |
80 |
400 |
Dan |
50 |
비교 연산자(=, <, >, <=, >= 등)와 논리 연산자(AND, OR, NOT 등)를
WHERE절에 사용하여 데이터를 필터링합니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
300 |
Mike |
80 |
WHERE절에IS NULL을 사용하여 null 값을 확인합니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
400 |
Dan |
50 |
WHERE절 내에서 함수 식 사용.
ID |
NAME |
AGE |
|---|---|---|
100 |
John |
30 |
200 |
Mary |
Null |
300 |
Mike |
80 |
WHERE절에서BETWEEN연산자를 사용하여 값 범위를 기준으로 데이터를 필터링합니다.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
300 |
Mike |
80 |
WHERE절 내에서 스칼라 하위 쿼리 사용.
ID |
NAME |
AGE |
|---|---|---|
300 |
Mike |
80 |
WHERE절의 상관 하위 쿼리.
ID |
NAME |
AGE |
|---|---|---|
200 |
Mary |
Null |
Known Issues¶
발견된 문제 없음