【问题标题】:Search Table for a matching string Oracle在表中搜索匹配的字符串 Oracle
【发布时间】:2014-03-29 05:43:35
【问题描述】:

如何在具有外键关系的表及其子表的所有列中搜索匹配的字符串并返回结果。

请某人,给我这个oracle查询。

问候

【问题讨论】:

  • 如何将表定义为“子”?这背后的想法是什么?
  • 更新了我的问题..请检查
  • 这是针对整个架构的……这可能会阻塞数据库服务器。我希望它用于一个特定的表及其依赖表。

标签: oracle


【解决方案1】:

试试这个:

SELECT 'select * from ' || table_name || ' where ' || clause
  FROM (SELECT DISTINCT REPLACE(stragg(column_name)
                                  over(PARTITION BY table_name ORDER BY table_name), ',',
                                  ' = ''__your_string__'' OR ') || ' = __your_string__' clause,
                         table_name
           FROM user_tab_columns
          WHERE table_name IN
                (SELECT table_name
                   FROM all_constraints
                  WHERE constraint_type = 'R'
                    AND r_constraint_name IN (SELECT constraint_name
                                                FROM all_constraints
                                               WHERE constraint_type IN ('P', 'U')
                                                 AND table_name = '__yout_table__')));

此外,您必须将其包装在 PLSQL 中或以某种方式循环以执行记录集的每一行。

【讨论】:

  • ORA-00904: "STRAGG": 无效的标识符 ...我正面临您的查询
  • 我尝试使用 sys.stragg 并且它有效,但仍然没有获取任何结果。
  • 您是否将 your_table 替换为所需的表名,并将 your_string 替换为寻找的字符串?您使用哪个版本的 Oracle?
  • 我按照您的指示更换了,但它不起作用。使用 oracle 11g
  • 您的记录集是空的还是收到任何错误?尝试一一执行选择语句。如果记录集为空,这应该意味着 your_table 可能没有外键...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
相关资源
最近更新 更多