SELECT
在 Oracle 中,我们可以编写此代码以使用语句生成单行。
SELECT 1 AS x FROM dual
Teradata 的等价物是什么?
SELECT
在 Oracle 中,我们可以编写此代码以使用语句生成单行。
SELECT 1 AS x FROM dual
Teradata 的等价物是什么?
在大多数情况下,Teradata 数据库中实际上不需要任何表。以下是有效的 SQL(就像在 H2、PostgreSQL、Redshift、SQL Server、SQLite、Sybase ASE、Sybase SQL Anywhere、Vertica 中一样)
SELECT 1
SELECT 1 WHERE 1 = 1
但是,当需要设置操作时,有一个例外。例如,这在 Teradata 中是无效的:
SELECT 1 UNION ALL SELECT 2
产生此错误:
UNION、INTERSECT 或 MINUS 的 SELECT 必须引用表。
但是由于该FROM
子句通常是可选的,因此很容易模拟DUAL
如下表:
SELECT 1 FROM (SELECT 1 AS "DUMMY") AS "DUAL"
UNION ALL
SELECT 2 FROM (SELECT 1 AS "DUMMY") AS "DUAL"
如果需要与 Oracle 等实现兼容性,很容易创建一个行为类似于 Oracle 对偶的视图:
CREATE VIEW "DUAL" AS (SELECT 1 AS "DUMMY");
请注意,这DUAL
是 Teradata 中的关键字,因此需要引用视图。
如果有人感兴趣,jOOQ 用户手册列出了DUAL
在 30 多种 SQL 方言中模拟(如果需要)的各种方法。