sql >> Database teknologi >  >> RDS >> Mysql

Er der en SQL-forespørgsel, der altid vil returnere nul resultater?

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


  1. Sådan sender du inputparameter i lagret procedurekald fra en enkelt kommandolinje

  2. Prøv at konvertere Time til Sec i Oracle SQL

  3. ER_TRUNCATED_WRONG_VALUE:Forkert dato-tidsværdi

  4. Hvordan genstarter man en ekstern MySQL-server, der kører på Ubuntu linux?