postgresqlデータベースが存在するかどうかを確認します(大文字と小文字を区別しない方法)


9

dbが存在するかどうかをチェックする「エレガントな組み込み」の大文字と小文字を区別しない方法はありますか?

しか見つかりませんでしたSELECT datname FROM pg_catalog.pg_database WHERE datname='dbname'が、これはCSチェックです。すべてのデータベース名を取得して手動でフィルタリングすることを最初に思い浮かぶのは、よりエレガントな方法があると思います。


大文字と小文字を区別するアイテムの大文字と小文字を区別しないチェックが必要なのはなぜですか?
エヴァンキャロル

回答:


18

以下を使用できます。

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

...ただし、データベース名で大文字と小文字が区別されるため、大文字と小文字を正しく一致させない限り、DB名に接続しようとしても実際には機能しません。これはでインデックスを使用dbnameしませんが、これが問題となるのに十分なデータベースがあるとは考えられません。

PostgreSQLは引用符で囲まれていない識別子を小文字に変換するため、たいていの場合クライアントは大文字と小文字を区別しないように見えます。実際に、"DatabaseName"そして"databasename"異なるものです。


4

真/偽の答えが必要な場合は、使用できます

select exists(
 SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower('dbname')
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.