Avatar billede michael_stim Ekspert
28. juni 2007 - 10:25 Der 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
Avatar billede arne_v Ekspert
28. juni 2007 - 10:33 #1
En temporaer fil er naeppe en brugnar loesning im mange kontekster.

Jeg vill angribe det programmatatisk.

Du lader din applikation finde alle kolonne navne og saa opbygger du en SQL med en
en forbandet masse OR betingelser.
Avatar billede michael_stim Ekspert
28. juni 2007 - 10:37 #2
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)
Avatar billede michael_stim Ekspert
28. juni 2007 - 10:38 #3
OK, du mener finde kolonnenavnet og köre dem igennem en loop med f ex PL/SQL.
Avatar billede arne_v Ekspert
28. juni 2007 - 11:01 #4
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.
Avatar billede arne_v Ekspert
28. juni 2007 - 11:02 #5
Samme teknik som i eksemplet du fandt, men uden brug af temporaer fil, som er noget gris.
Avatar billede michael_stim Ekspert
02. juli 2007 - 10:13 #6
Skal vi få denne lukket Arne? Tak for hjälpen, men det blev ikke aktuelt alligevel.
Avatar billede arne_v Ekspert
03. juli 2007 - 01:35 #7
Jeg antager at det var en opfordring til et svar.

:-)
Avatar billede michael_stim Ekspert
03. juli 2007 - 08:17 #8
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester