拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如果我不知道具体的架构\表\列,请告诉我如何找到Oracle数据库中的所有值?[复制]

如果我不知道具体的架构\表\列,请告诉我如何找到Oracle数据库中的所有值?[复制]

白鹭 - 2022-02-11 1980 0 0
这个问题在这里已经有了答案 在所有表中的所有栏位中搜索特定值(Oracle) 17 个答案 Oracle 在所有表的所有列中搜索字符串 [重复] 1 个答案 Oracle数据库在所有表中搜索字符串,回传行资料[重复] 1个回答 在 Oracle SQL Developer 中识别具有特定内容的表 [重复] 1 个答案 3 小时前关闭

如果我不知道具体的架构\表\列,请告诉我如何找到 Oracle 数据库中的所有值?

我正在撰写技术档案,例如,我想知道值“Cat”在哪个表和哪个列中。我怎样才能做到这一点?遍历所有列和表的 python 回圈需要很长时间....

uj5u.com热心网友回复:

好吧,如果您想扫描所有表和所有列,任何事情都将花费很长时间(除非它是 Scott 的小型模式)。

无论如何:您将需要动态 SQL。这是一个示例:我正在搜索CHAR我自己的架构中的所有类似资料型别的列(第 8 行),寻找KING(第 15 行):

SQL> DECLARE
  2     l_str  VARCHAR2 (500);
  3     l_cnt  NUMBER := 0;
  4  BEGIN
  5     FOR cur_r IN (SELECT u.table_name, u.column_name
  6                     FROM user_tab_columns u JOIN user_tables t
  7                       ON u.table_name = t.table_name
  8                    WHERE u.data_type LIKE '%CHAR%')
  9     LOOP
 10        l_str :=
 11              'SELECT COUNT(*) FROM '
 12           || cur_r.table_name
 13           || ' WHERE '
 14           || cur_r.column_name
 15           || ' like (''%KING%'')';
 16
 17        EXECUTE IMMEDIATE (l_str)
 18           INTO l_cnt;
 19
 20        IF l_cnt > 0
 21        THEN
 22           DBMS_OUTPUT.put_line (l_cnt || ' : ' || cur_r.table_name);
 23        END IF;
 24     END LOOP;
 25  END;
 26  /
1 : TABLE22
1 : EMP

PL/SQL procedure successfully completed.

SQL>

结果表明KING出现在两个表 (TABLE22EMP) 中,每个表中出现一次。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *