在Oracle中,我们可以使用SELECT
语句编写此代码以生成单行。
SELECT 1 AS x FROM dual
Teradata的等价物是什么?
答案 0 :(得分:2)
在大多数情况下,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中的关键字,因此需要引用该视图。