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

标签 sql db2 ibm-midrange squirrel-sql

我仍然有点菜鸟,所以如果这个问题有点明显,请原谅。我确实在寻找答案,但要么无法理解我找到的答案是如何应用的,要么就是找不到答案。

我在 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/

相关文章:

sql - 是否可以在 Oracle PL/SQL 中执行此操作?

db2 - 获取自 20120801185856 时间戳以来特定时间戳以来已更改的 db2 表的列表

sql - 内连接与笛卡尔积的性能

html - 需要关于是否在 LANSA 中使用 bootstrap 的建议

c++ - IBM i 上 std::vector<std::string> 的最大容量

php - 如何用 PHP 抓取 AS400?

sql - 如何设计顺序很重要的 SQL 查找表

mysql - 如何插入其他表的字段

sql - FROM子句中出现Delphi语法错误,但是-没有FROM子句

java - 调用 SQLException.getMessage() 时出现 RuntimeException (DB2)