Bergantung pada DBMS, satu atau lebih dari berikut ini akan berfungsi:
SELECT NULL LIMIT 0
(Sintaks PostgreSQL dan MySQL) /SELECT TOP 0 1
(Sintaks MS SQL Server)SELECT NULL WHERE FALSE
(DBMS dengan tipe boolean, misalnya PostgreSQL)SELECT NULL WHERE 1=0
(sebagian besar DBMS)
Untuk Oracle, ini harus dalam bentuk SELECT NULL FROM DUAL
, saya yakin, karena Anda tidak dapat memiliki SELECT
tanpa FROM
klausa dari beberapa macam; tidak yakin versi LIMIT
. yang mana / TOP
dan WHERE
itu akan menerima.
Opsi yang lebih rumit adalah membuat tabel (sementara) dan tidak memasukkan baris apa pun ke dalamnya, yang dapat memberi Anda sejumlah kolom, yang akan memiliki tipe terkait meskipun tidak berisi nilai:
-- PostgreSQL
CREATE TEMP TABLE dummy ( a Int, b VarChar(42) );
SELECT * FROM dummy;
-- MS SQL Server
CREATE TABLE #DUMMY ( a Int, b VarChar(42) );
SELECT * FROM #DUMMY;
Di PostgreSQL, Anda bahkan dapat membuat tabel tanpa kolom, memungkinkan Anda untuk menetapkan hasil dengan nol baris dan nol kolom :
CREATE TEMP TABLE empty ();
SELECT * FROM empty;
Kemungkinan lain adalah jika DBMS memiliki fungsi set-return, mereka mungkin dapat mengembalikan set kosong. Misalnya, sekali lagi di PostgreSQL karena itu yang paling saya ketahui, Anda dapat memberikan rentang yang tidak valid ke generate_series()
:
SELECT * FROM generate_series(0,-1);