V závislosti na DBMS bude fungovat jedno nebo více z následujících:
SELECT NULL LIMIT 0
(syntaxe PostgreSQL a MySQL) /SELECT TOP 0 1
(syntaxe MS SQL Server)SELECT NULL WHERE FALSE
(DBMS s typem boolean, např. PostgreSQL)SELECT NULL WHERE 1=0
(většina DBMS)
Pro Oracle budou muset mít tvar SELECT NULL FROM DUAL
, věřím, protože nemůžete mít SELECT
bez FROM
klauzule nějakého druhu; nejste si jisti, které verze LIMIT
/ TOP
a WHERE
přijme.
Propracovanější možností je vytvořit (dočasnou) tabulku a nevkládat do ní žádné řádky, což vám může poskytnout libovolný počet sloupců, které budou mít přiřazené typy, i když neobsahují žádné hodnoty:
-- 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;
V PostgreSQL můžete dokonce vytvořit tabulku bez sloupců, což vám umožní mít sadu výsledků s nulovými řádky a nulovými sloupci :
CREATE TEMP TABLE empty ();
SELECT * FROM empty;
Další možností je, že pokud má DBMS funkce vracející sadu, může být schopen vrátit prázdnou sadu. Například opět v PostgreSQL, protože to znám nejlépe, můžete dát neplatný rozsah generate_series()
:
SELECT * FROM generate_series(0,-1);