標準はあるにはあるが癖の多いSQL 全部俺 #11 デュエル、じゃなくて、デュアル Tweet
標準はあるにはあるが癖の多いSQL 全部俺w Advent Calendar 2020の10日目です。
ネタがなくてw そこ狙って来たか!
と思われるかもしれませんが、これを語らずして、非互換語るなかれw
とうことで、Oracleでは、当たり前に利用している dual について
定数式をSELECT文で計算する場合などに指定する表です。dual表に、おイタしたりしたネタも過去あったような気がしますw
Oracleの方言なので、単純ですが、非互換では有名ですね。
では、本家から
Oracle
ORACLE> select 1 from dual;
1
----------
1
ORACLE> select 1;
select 1
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
MySQL
昨日のエントリで使ってしまったw ので気づいた方もいると思いますが、MySQLは dual 付けられるんですよね。
13.2.10 SELECT Statement
https://dev.mysql.com/doc/refman/8.0/en/select.html
mysql> select 1 from dual;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.06 sec)
mysql> select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.04 sec)
PostgreSQL
PostgreSQLには dual を使うような習慣もないですし、文法的に用意されていません。無理やり dual 表を定義すれば別でしょうけど、無駄なだけなので移行するなら、素直に dualを削除が潔いと思いますw
SELECT
https://www.postgresql.jp/document/12/html/sql-select.html
postgres=> select 1 from dual;
ERROR: relation "dual" does not exist
LINE 1: select 1 from dual;
^
postgres=> select 1;
?column?
----------
1
(1 row)
おまけ
Redshift
Redshiftにも dual はありません。
SELECT
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_SELECT_synopsis.html
redshift=# select 1 from dual;
ERROR: relation "dual" does not exist
redshift=# select 1;
?column?
----------
1
(1 row)
また、Athenaも同様です
SELECT
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/select.html
新しい年には、何か変化が欲しいと感じる今日この頃w
(2024.6更新)
喜ばしいことに、Oracle Database 23ai以降、from dualが必須ではなくなりました!
SELECT Withhout FROM Clause
https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/application_development.html#GUID-86198-1
実行計画は、SQL文のレントゲン写真だ! Oracle Database編 (全部俺) Advent Calendar 2019
・標準はあるにはあるが癖の多いSQL 全部俺 #1 Pagination
・標準はあるにはあるが癖の多いSQL 全部俺 #2 関数名は同じでも引数が逆の罠!
・標準はあるにはあるが癖の多いSQL 全部俺 #3 データ型確認したい時あるんです
・標準はあるにはあるが癖の多いSQL 全部俺 #4 リテラル値での除算の内部精度も違うのよ!
・標準はあるにはあるが癖の多いSQL 全部俺 #5 和暦変換機能ある方が少数派
・標準はあるにはあるが癖の多いSQL 全部俺 #6 時間厳守!
・標準はあるにはあるが癖の多いSQL 全部俺 #7 期間リテラル!
・標準はあるにはあるが癖の多いSQL 全部俺 #8 翌月末日って何日?
・標準はあるにはあるが癖の多いSQL 全部俺 #9 部分文字列の扱いでも癖が出る><
・標準はあるにはあるが癖の多いSQL 全部俺 #10 文字列連結の罠(有名なやつ)
| 固定リンク | 0
コメント
Oracle Database 23cで、 dual を省略できるように拡張されました。(内部的には、dual が補われて実行されているようですが)
投稿: discus | 2023年11月23日 (木) 19時26分