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

Søg efter en given streng i alle felter i et helt skema for Oracle

"ALL_TAB_COLUMNS " er en systabel, har alle tabelkolonner datatype osv.

"USER_TAB_COLUMNS " er en systabel, har alle tabelkolonner datatype osv. (hvilken ejer er den nuværende bruger). (Tak Rene)

Et eksempel:

 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;
    /

denne forespørgsel vil udlæse tabelnavn '' kolonnenavn'' og tælle, hvis du har standard kolonne- og tabelnavne, kan du ændre forespørgsel som IF-kolonner> 0 og derefter skrive en forespørgsel UNION i loop og returnere markøren, eller returnere en tabel,



  1. PHP Mysqli returnerer ingen rækker, mens manuel SQL-forespørgsel returnerer resultater

  2. Sådan bruger du ENHVER / NOGEN logisk operatør i SQL Server - SQL Server / TSQL Tutorial Del 127

  3. Hvor mange rækker i en database er FOR MANGE?

  4. sikkerhedskopiere filer til google drev ved hjælp af PHP