如何在postgres中过滤表列名?

时间:2015-12-28 16:30:00

标签: postgresql

用例是,假设您有一个包含大量列(100+)的表,并且您想要查看表中是否存在某个列名。另一个用例是,表中的列有一个名称方案,允许我搜索一个术语,该术语将显示具有该名称的所有字段 - 例如与支付卡相关的所有字段都以“card_”为前缀。

在MySQL中,我可以通过执行show fields in <table_name> like '%<search_term>%'来处理上述两种情况。我已经google了一个解决方案,但只找到了与过滤实际表名和显示表模式(例如\ d +)相关的​​结果,这不是我想要的。我也在psql shell中尝试过MySQL命令的变种,但没有运气。

我正在寻找一种方法来使用SQL或其他Postgres内置方式来做到这一点。现在我正在将表模式复制到文本文件并以这种方式搜索它。

1 个答案:

答案 0 :(得分:0)

您可以使用information_schema.columnstable_name查询column_name。例如:

>= select table_name, column_name
   from information_schema.columns
   where table_name = 'users'
     and column_name like '%password%';

 table_name |      column_name
------------+------------------------
 users      | encrypted_password
 users      | reset_password_token
 users      | reset_password_sent_at