Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Chcę wyszukać określoną wartość we wszystkich kolumnach wszystkich tabel w Oracle 11g

Możesz to zrobić za pomocą jednego zapytania, choć jest to trochę zawiłe. To zapytanie przeszuka wszystkie kolumny CHAR i VARCHAR2 w bieżącym schemacie pod kątem ciągu '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

Zauważ, że jest to dostosowana wersja zapytania Laurenta Schneidera do policz wiersze w każdej tabeli jednym zapytaniem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak określić klauzulę IN w zapytaniu dynamicznym przy użyciu zmiennej?

  2. Utwórz CLOB z długiego ciągu za pomocą JDBC

  3. Połącz węzły XMLType w zapytaniu Oracle

  4. Sortowanie rekordów z Oracle z wieloma miejscami dziesiętnymi (.)

  5. Wykonaj procedurę w wyzwalaczu