我仍然有点菜鸟,所以如果这个问题有点明显,请原谅。我确实在寻找答案,但要么无法理解我找到的答案是如何应用的,要么就是找不到答案。
我在 DB2 for i 服务器上有一个庞大的数据库,我通过 SQLExplorer(基于 Squirrel SQL)使用 SQL 访问它。这些表格的文件记录很差,首要任务是弄清楚如何找到自己的路。
我想编写一个简单的查询来执行此操作:
1) 允许我在整个数据库中搜索包含名为“备注”(其中包含字段说明)的列的表。
2) 然后我希望它在该列中搜索关键字。
3) 我想要一个返回的表,其中包含包含该关键字的表的名称(只是名称,我可以稍后按字母顺序查找表并在需要时查看内部。)
我需要这个搜索是超轻量级的,我希望我描述的概念能够实现这一点。任何消耗大量资源的事情都可能激怒服务器的系统管理员。
只是为了表明我已经尝试过(并且我是一个完整的菜鸟),这是我到目前为止所得到的。
SELECT *
FROM <dbname>
WHERE Remarks LIKE '<keyword>'
随意 mock ,我告诉过你我是个白痴:-)。
有什么帮助吗?也许至少是朝着正确的方向插入?
PS - 我似乎无法在 SQLExplorer 中找到搜索功能,如果有人知道我是否可以使用简单的搜索或过滤器来实现同样的目标……那就太好了。
最佳答案
您可以查询系统目录以识别表:
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 predicate有关模式表达式的详细信息。
关于sql - 在 DB2 for i 上,搜索列,以列表形式返回表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750369/