René Nyffenegger's collection of things on the web | |
René Nyffenegger on Oracle - Most wanted - Feedback
- Follow @renenyffenegger
|
Searching for a value in an entire table | ||
Imagine, you have a table with some 40 columns, and you want to search for a specific value
within these rows. One approach would be to do something like
select * from the_table where row_01 like '%VAL%' or row_02 like '%VAL%'... .
Of course, this is not what you want. The following script will ask you for a table name and the value to be searched.
set feedback off set pagesize 0 set verify off accept table_name prompt 'Enter table name: ' accept value_str prompt 'Enter value to be searched: ' set termout off spool fi.sql select 'set feedback off' from dual; select 'prompt' from dual; select 'prompt ****************************************' from dual; select 'prompt &value_str is found in the following rows' from dual; select 'prompt ****************************************' from dual; select 'select * from &table_name where ' from dual; select 'upper(' || column_name || ') like upper(''%&value_str.%'') or ' from user_tab_columns where table_name=upper('&table_name') and column_id < ( select max(column_id) from user_tab_columns where table_name = upper('&table_name')); select 'upper(' || column_name || ') like upper(''%&value_str%''); ' from user_tab_columns where table_name = upper('&table_name') and column_id = (select max(column_id) from user_tab_columns where table_name = upper('&table_name')); spool off set termout on @fi.sql
See also Finding specific data in Oracle Tables.
Thanks to Vikas Dosi who notified me of an error on this page.
|