SQLを書く際、以下のような場合に、1行だけのダミーテーブルが欲しいことがある。その際に利用できるダミーテーブルをRBDMSごとに記載する。
例:
- 関数で現在日時だけ取りたい (
SELECT sysdate FROM ~
) - シーケンス採番したい (
SELECT test.test_sql.nextval FROM ~
) - 計算機代わりにしたい (
SELECT 60 * 60 * 24 * 365 FROM ~
) - 正規表現があってるか確認したい (
SELECT REGEXP_LIKE('ABC', '[0-9][A-Z]*') FROM ~
)
Oracle
Oracleの場合はDUAL表を利用する。
SELECT * FROM DUAL
実行結果:
DUMMY |
---|
x |
参考:https://docs.oracle.com/cd/F19136_01/sqlrf/Selecting-from-the-DUAL-Table.html
DB2
DB2の場合はSYSDUMMY1表を利用する。
SELECT * FROM SYSIBM.SYSDUMMY1
実行結果:
IBMREQD |
---|
Y |
参考:https://www.ibm.com/docs/ja/db2/11.1?topic=cv-sysibmsysdummy1
Symfoware
Symfowareの場合はRDBII_ASSISTTABLEを使用する。
SELECT * FROM RDBII_SYSTEM.RDBII_ASSISTTABLE
実行結果:
ASSISTCOLUMN |
---|
1 |
参考:https://software.fujitsu.com/jp/manual/manualfiles/M080271/J2X02268/03Z201/aplsqae/aplsq179.html
上記以外のDB
上記以外のDBでは、基本的にFROM
句が省略可能となっているため、単純にFROM句を記載しないだけでよい。
以下は、事情によりFROM
句を省略できない場合に利用できる方法を記載する。
SELECT * FROM (SELECT 1 AS DUMMY) AS DUAL
実行結果:
DUMMY |
---|
1 |
対象:
- SQL Server
- Postgresql
- MySQL
- SQLite
- etc.