28. juni 2007 - 10:25Der er
7 kommentarer og 1 løsning
Finde värdi i tabel.
Skal finde en värdi i en tabel med ekstremt mange kolonner. Jeg ved ikke hvilken kolonne värdien findes. Fandt dette script på nettet men ved ikke hvordan det skal köres, eller hvis nogen har et i ren SQL:
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
Uhh, det var det jeg ville undgå. Der er 130-140 kolonner i tabellen. Og nej, den er ikke normaliseret, og nej, det er ikke mig der har modelleret. Det er bare at smile og acceptere ;o)
Jeg mener du koerer en query som henter alle kolonne navne og udfra det resultat laver du dynamisk en SQL med en WHERE med 140 betinglser OR'et sammen og udfoerer den.
Korrekt. At jeg ikke brugte dit svar, er ikke ensbetydende med at det var forkert ;o) Det mindste man kan göre er at give lidt point for den tid du har brugt på at hjälpe.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.