Afhankelijk van het DBMS werken een of meer van de volgende dingen:
SELECT NULL LIMIT 0
(PostgreSQL- en MySQL-syntaxis) /SELECT TOP 0 1
(MS SQL Server-syntaxis)SELECT NULL WHERE FALSE
(DBMS met een booleaans type, bijv. PostgreSQL)SELECT NULL WHERE 1=0
(meeste DBMSen)
Voor Oracle moeten deze de vorm hebben SELECT NULL FROM DUAL
, geloof ik, omdat je SELECT
. niet kunt hebben zonder een FROM
clausule van een soort; niet zeker welke versies van de LIMIT
/ TOP
en WHERE
het zal accepteren.
Een meer uitgebreide optie is om een (tijdelijke) tabel te maken en er geen rijen in in te voegen, wat u een willekeurig aantal kolommen kan geven, waaraan typen zijn gekoppeld, ook al bevatten ze geen waarden:
-- 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;
In PostgreSQL kunt u zelfs een tabel zonder kolommen maken, zodat u een resultaat kunt instellen met nul rijen en nul kolommen :
CREATE TEMP TABLE empty ();
SELECT * FROM empty;
Een andere mogelijkheid is dat als het DBMS set-retourfuncties heeft, ze mogelijk een lege set kunnen retourneren. Bijvoorbeeld, opnieuw in PostgreSQL, aangezien dit is wat ik het beste ken, kun je een ongeldig bereik geven aan generate_series()
:
SELECT * FROM generate_series(0,-1);