Oracle DUAL in Snowflake, Databricks and BigQuery
All three targets allow SELECT without a FROM clause, so FROM DUAL can simply be removed. That is the documented form in each of them.
Oracle syntax: SELECT expr FROM DUAL · Oracle docs
Equivalents
| Target | Support | Syntax | Notes | Source |
|---|---|---|---|---|
| Snowflake | Rewrite | SELECT expr | The FROM clause is optional. DUAL is not described in the Snowflake SQL reference, so do not rely on it. | Snowflake docs |
| Databricks | Rewrite | SELECT expr | The FROM clause is optional in a SELECT. | Databricks docs |
| BigQuery | Rewrite | SELECT expr | A SELECT without FROM returns one row. | BigQuery docs |
Behavior differences to check
- Sequences read with seq.NEXTVAL FROM DUAL need a different mechanism in each target (Snowflake sequences, identity columns in Databricks, GENERATE_UUID or ROW_NUMBER in BigQuery).
Examples
Evaluate an expression
SELECT UPPER('abc') FROM DUAL;SELECT UPPER('abc');SELECT upper('abc');SELECT UPPER('abc');