And*_*lov 12 postgresql catalogs
是否有一种“优雅的内置”不区分大小写的方式来检查 db 是否存在?
我只找到了SELECT datname FROM pg_catalog.pg_database WHERE datname='dbname'
,但这是 CS 检查。想到的第一件事是检索所有数据库名称并手动过滤它们,但我认为有更优雅的方法来做到这一点。
Cra*_*ger 21
您可以使用:
SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower('dbname');
Run Code Online (Sandbox Code Playgroud)
......然而,数据库名称是区分大小写的,因此试图连接到数据库名称实际上不会工作,除非你的情况下正确匹配。这不会在 上使用任何索引dbname
,但是您不太可能有足够的数据库来解决这个问题。
人们没有意识到这一点,因为 PostgreSQL 将不带引号的标识符大小写折叠为小写,所以大多数时候它看起来对客户端不区分大小写。其实"DatabaseName"
和"databasename"
是不同的东西。
小智 8
If you want a true/false answer you can use
select exists(
SELECT datname FROM pg_catalog.pg_database WHERE lower(datname) = lower('dbname')
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27292 次 |
最近记录: |