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

Wyszukaj dany ciąg we wszystkich polach całego schematu dla Oracle

ALL_TAB_COLUMNS " jest tabelą systemową, ma typ danych dla wszystkich kolumn tabeli itp.

USER_TAB_COLUMNS " jest tabelą systemową, ma typ danych wszystkich kolumn tabeli itp. (którym właścicielem jest bieżący użytkownik). (Dzięki Rene)

Przykład:

 SET SERVEROUTPUT ON SIZE 100000 -- maybe you have a lot of table and columns

    DECLARE
      matches INTEGER;
    BEGIN
      FOR columns IN (SELECT table_name, column_name FROM user_tab_columns where data_type = 'VARCHAR2') LOOP

        EXECUTE IMMEDIATE
          'SELECT COUNT(*) FROM '||t.table_name||' WHERE instr('||t.column_name||' , :1) > 0'
          INTO matches
          USING 'What you search';

        IF matches > 0 THEN
          dbms_output.put_line( t.table_name ||' '||t.column_name||' '||matches );
        END IF;

      END LOOP;

    END;
    /

to zapytanie wygeneruje nazwę_tabeli '' nazwa_kolumny '' i zlicza, jeśli masz standardowe nazwy kolumn i tabel, możesz zmienić zapytanie jako kolumny IF> 0, a następnie napisać zapytanie UNION w pętli i zwróci kursor lub zwróci tabelę,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie Oracle Update z połączeniami

  2. Ponieważ dane wartości zerowej nie są odzwierciedlane

  3. Tabela pochodna Oracle sql — opcjonalny aliasing

  4. Nieistotna różnica planu wykonania z Oracle przy użyciu jdbc Timestamp lub Date

  5. Błąd SSMA dla Oracle Connect to Oracle