Controlla se esiste il database postgresql (modo senza distinzione tra maiuscole e minuscole)


9

Esiste un modo "elegante incorporato" senza distinzione tra maiuscole e minuscole per verificare se esiste db?

Ho trovato solo SELECT datname FROM pg_catalog.pg_database WHERE datname='dbname', ma questo è un controllo CS. La prima cosa che mi viene in mente per recuperare tutti i nomi db e filtrarli a mano, ma penso che ci sia un modo più elegante per farlo.


Perché vuoi un controllo senza distinzione tra maiuscole e minuscole di un articolo con distinzione tra maiuscole e minuscole?
Evan Carroll,

Risposte:


18

Puoi usare:

SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower('dbname');

... tuttavia, i nomi dei database fanno distinzione tra maiuscole e minuscole, quindi il tentativo di connettersi al nome DB non funzionerà effettivamente a meno che non abbini correttamente il caso. Questo non utilizzerà alcun indice su dbname, ma è piuttosto improbabile che tu abbia abbastanza database per importare.

La gente non se ne rende conto perché PostgreSQL piega gli identificatori non quotati in lettere minuscole, quindi la maggior parte delle volte non fa distinzione tra maiuscole e minuscole per i client. In effetti, "DatabaseName"e "databasename"sono cose diverse.


4

Se vuoi una risposta vera / falsa puoi usare

select exists(
 SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower('dbname')
);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.