Toon posts:

[Oracle] PL/SQL translate

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben momenteel bezig met het schrijven van een procedure die een query uitvoert.

code:
1
2
3
4
5
6
7
8
9
10
select
    item_id
   ,item_num
   ,item_group
from
      item_master
where
   item_owner = 'country_%'
order by 
            item_id



Zie hieronder een voorbeeld van het resultaat

code:
1
2
3
4
5
6
7
ITEM_ID    ITEM_NUM      ITEM_GROUP
1              56382              sales IT group
2              17625              sales NL group
3              87563              custom NL group
4              76354              pack IT group
5              73645              change IT group
6              17625              change DE group


Nu weet ik dat er van uit gegaan kan worden dat item_group altijd "NL group" of "IT group" of "DE group" in zich zal hebben. Wat niet inhoud dat dit altijd aan het einde zal staan. Voor deze functie ben ik op zoek naar een manier om nog een vierde result te krijgen namelijk ITEM_GROUP_TRANSLATED welke in de gevallen dat ITEM_GROUP b.v. "NL group" ergens in zich heeft de waarde "Netherlands" zal terug geven en voor de gevallen van "DE group" Germany zal terug geven.

Enig idee hoe dit aan te pakken.

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:05

Cyphax

Moderator LNX
Je kunt SUBSTR gebruiken icm INSTR om die string eruit te pakken (die altijd 8 characters lang is zo te zien?) en dan via een case statement bepalen welke het is?
Iets dat misschien lijkt op:
SQL:
1
2
3
case substr(ITEM_GROUP, instr(ITEM_GROUP,"group", 0, 1)-4)
when 'NL group' then select 'Netherlands'
when 'DE group' then select 'Germany'

Hmmm ik weet niet hoor. :+
Wees er even creatief mee. :P
Of misschien iets als
SQL:
1
2
3
case
  when instr(TABLE.ITEM_GROUP, 'NL group', 0, 1) > 0 then select 'Netherlands'
  when ...

Even mee spelen dus, ik heb geen Oracle server in de buurt helaas. :P

[ Voor 26% gewijzigd door Cyphax op 20-01-2006 12:23 ]

Saved by the buoyancy of citrus