一尘不染

在DB2 for i上,搜索列,以列表形式返回表名

sql

我还是有点菜鸟,请原谅这个问题是否显而易见。我确实在寻找答案,但要么不明白我找到的答案是如何应用的,要么根本找不到答案。

我在DB2 for i服务器上拥有一个庞大的数据库,该数据库是通过SQLExplorer(基于Squirrel
SQL)使用SQL访问的。这些表的文档记录非常差,第一手业务是弄清楚如何找到自己的出路。

我想写一个简单的查询来做到这一点:

1) 允许我搜索整个数据库,以查找包含名为“备注”(包含字段说明)的列的表。

2) 然后,我希望它在该列中搜索关键字。

3) 我想返回一个包含该关键字的表 名称 的表(只是名称,我可以稍后按字母顺序查询该表,并在需要时向内看。)

我需要这种搜索是超轻量级的,并且希望我所描述的概念能够实现这一目标。吞噬大量资源的任何事情都可能激怒服务器的sys admin。

只是为了表明我已经尝试过(而且我是一个完整的菜鸟),这就是到目前为止我所拥有的。

SELECT *
FROM <dbname>
WHERE Remarks LIKE '<keyword>'

随意嘲笑,我告诉过你我是个白痴:-)。

有什么帮助吗?也许至少在正确的方向上有所推动?

PS-如果有人知道我是否可以使用简单的搜索或过滤器来实现相同的目标,那么我似乎无法在SQLExplorer中找到搜索功能……那太好了。


阅读 115

收藏
2021-05-23

共1个答案

一尘不染

您可以查询系统目录以标识表:

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME 
FROM QSYS2.SYSCOLUMNS WHERE UPPER(DBILFL) = 'REMARKS'

然后分别查询每个表:

SELECT * FROM TABLE_SCHEMA.TABLE_NAME WHERE Remarks LIKE '%<keyword>%'

有关模式表达式的详细信息,请参见LIKE谓词

2021-05-23