Afhængigt af DBMS vil en eller flere af følgende virke:
SELECT NULL LIMIT 0
(PostgreSQL og MySQL syntaks) /SELECT TOP 0 1
(MS SQL Server-syntaks)SELECT NULL WHERE FALSE
(DBMS med en boolesk type, f.eks. PostgreSQL)SELECT NULL WHERE 1=0
(de fleste DBMS'er)
For Oracle skal disse have formen SELECT NULL FROM DUAL
, tror jeg, da du ikke kan have SELECT
uden en FROM
klausul af en slags; ikke sikker på, hvilke versioner af LIMIT
/ TOP
og WHERE
det vil acceptere.
En mere omfattende mulighed er at oprette en (midlertidig) tabel og ikke indsætte nogen rækker i den, hvilket kan give dig et hvilket som helst antal kolonner, som vil have typer tilknyttet, selvom de ikke indeholder nogen værdier:
-- 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;
I PostgreSQL kan du endda oprette en tabel uden kolonner, hvilket giver dig mulighed for at få et resultatsæt med nul rækker og nul kolonner :
CREATE TEMP TABLE empty ();
SELECT * FROM empty;
En anden mulighed er, hvis DBMS'en har sæt-returnerende funktioner, kan de muligvis returnere et tomt sæt. For eksempel, igen i PostgreSQL, da det er det, jeg kender bedst, kan du give et ugyldigt interval til generate_series()
:
SELECT * FROM generate_series(0,-1);