It there a good way to check the number of existing table in the database that matches a particular format?
For example, I am looking for any table names that starts with 'rangtable', such as 'rangtable1', 'rangtable2', 'rangtable3'….etc, in this case, it returns three.
I am not sure if there is a query or term I need to search for in the SQL realm. Best I came up with is to do a full table query and then do a fetchall (I am using Python with PostgreSQL) than try to do some regex matching with the result.
Advertisement
Answer
You can query the Postgres INFORMATION_SCHEMA.TABLES view :
SELECT COUNT(*) AS cnt FROM INFORMATION_SCHEMA.TABLES WHERE table_name LIKE 'rangtable%';
If you need to match against a regular expression (which is not the case for the simple pattern you provided), you can use operator SIMILAR TO, or better yet POSIX operator ~ :
SELECT COUNT(*) AS cnt FROM INFORMATION_SCHEMA.TABLES WHERE table_name ~ '^rangtable';