sql >> Database teknologi >  >> RDS >> Oracle

Jeg vil have søgespecifik værdi i alle kolonner i alle tabeller i oracle 11g

Du kan gøre det med en enkelt forespørgsel, selvom det er lidt indviklet. Denne forespørgsel vil søge i alle CHAR- og VARCHAR2-kolonner i det aktuelle skema efter strengen 'JONES'

select table_name,
       column_name
  from( select table_name,
               column_name,
               to_number(
                 extractvalue(
                   xmltype(
                     dbms_xmlgen.getxml(
                       'select count(*) c from ' || table_name ||
                       ' where to_char(' || column_name || ') = ''JONES'''
                     )
                   ),
                   'ROWSET/ROW/C'
                 )
               ) cnt
          from (select utc.*, rownum
                  from user_tab_columns utc
                 where data_type in ('CHAR', 'VARCHAR2') ) )
 where cnt >= 0

Bemærk, at dette er en tilpasset version af Laurent Schneiders forespørgsel til tæl rækkerne i hver tabel med en enkelt forespørgsel.




  1. Utrolig duplikat i en Entity Framework Query

  2. ORA-29913:fejl under udførelse af ODCIEXTTABLEOPEN-forklaring

  3. Alternativ af sys_refcursor

  4. MySQL JOIN, GRUPPER EFTER, BESTIL EFTER