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);