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¶
발견된 문제 없음