sql >> Databáze >  >> RDS >> Mysql

Existuje dotaz SQL, který vždy vrátí nulové výsledky?

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


  1. Existuje nějaký dobrý způsob, jak ladit řetězec nebo by byla binární data zkrácena?

  2. JSON_KEYS() – vrátí klíče z objektu JSON v MySQL

  3. Jak zrušit všechny tabulky v databázi bez zrušení samotné databáze?

  4. Heroku Postgres Error:PGError:ERROR:relační organizace neexistuje (ActiveRecord::StatementInvalid)