sql >> Databasteknik >  >> RDS >> Oracle

Jag vill ha ett sökspecifikt värde i alla kolumner i alla tabeller i Oracle 11g

Du kan göra det med en enda fråga även om det är lite invecklat. Den här frågan kommer att söka i alla CHAR- och VARCHAR2-kolumner i det aktuella schemat efter strängen '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

Observera att detta är en anpassad version av Laurent Schneiders fråga till räkna raderna i varje tabell med en enda fråga.




  1. PostGIS Homebrew installation som refererar till en gammal väg?

  2. Databasdesign:Sammansatt nyckel kontra primärnyckel för en kolumn

  3. Finns det prestandaproblem när filer lagras i PostgreSQL?

  4. zsh:kommandot hittades inte:mysql