PostgreSQL 检查与正则表达式匹配的表的数量

ech*_*cho 1 sql string postgresql count where-clause

有没有一种好方法来检查数据库中匹配特定格式的现有表的数量?

例如,我正在查找任何以 开头的表名'rangtable',例如'rangtable1', 'rangtable2', 'rangtable3'.... 等,在这种情况下,它返回三个。

我不确定是否有需要在 SQL 领域中搜索的查询或术语。我想出的最好办法是执行全表查询,然后执行 fetchall (我使用 Python 和 PostgreSQL),而不是尝试对结果进行一些正则表达式匹配。

有没有更好的办法?

GMB*_*GMB 5

您可以查询PostgresINFORMATION_SCHEMA.TABLES视图

SELECT COUNT(*) AS cnt 
FROM INFORMATION_SCHEMA.TABLES 
WHERE table_name LIKE 'rangtable%';
Run Code Online (Sandbox Code Playgroud)

如果您需要匹配正则表达式(这不是您提供的简单模式的情况),您可以使用运算符SIMILAR TO,或者更好的是 POSIX 运算符~

SELECT COUNT(*) AS cnt 
FROM INFORMATION_SCHEMA.TABLES 
WHERE table_name ~ '^rangtable';
Run Code Online (Sandbox Code Playgroud)