PDA

View Full Version : suchen im string mit sql



ILEMax
09-01-14, 13:26
Hi *all, und frohe neues ...

Problem:
in einem Datenfeld steht
Hugo 05 oder
HUGO/01 oder
HuGo 2010 oder
hugo 07 evtl aber auch mal
07 / Hugo

Also ein Wort und (oft, nicht immer) eine Zahl
Das Feld mit upper in Großbuchataben wandeln und auf like %HUGO% prüfen krig ich hin.
Aber wie kann ich (mit SQL) den 1-4-stellgen numerischen Wert extrahieren?

Danke
Der ILEMax, den nun RPGLE zur Lösung verwendet

Fuerchau
09-01-14, 14:01
Damit bist du auf dem richtigen Weg.
SQL bietet dazu keine Möglichkeit.
Du musst dir eine externe SQL-Funktion schreiben, die dir dann den Wert extrahiert.
Natürlich geht das auch als reine SQL-Language-Function, dahinter steckt dann aber trotzdem ein ILE-C-Programm und somit bist du per ILERPG dann auch nicht langsamer.

Alfred E. Neumann
10-01-14, 09:30
Hallo Max,
es geht auch so:
with daten (text) as
(select 'Hugo 05' from sysibm/sysdummy1
union all
select 'HUGO/01' from sysibm/sysdummy1
union all
select 'HuGo 2010' from sysibm/sysdummy1
union all
select 'hugo 07' from sysibm/sysdummy1
union all
select '07 / Hugo' from sysibm/sysdummy1),
conv (text, nbr) as
(select text,
trim(translate(xor(text,
translate(text,x'00000000000000000000',
'0123456789')),
' ', x'00'))
from daten)
select * from conv

==>

TEXT NBR
Hugo 05 05
HUGO/01 01
HuGo 2010 2010
hugo 07 07
07 / Hugo 07

ILEMax
10-01-14, 10:17
nö, leider nicht
ich wollte den Thread ja nicht überstrapazieren und ALLE Möglichkeiten abschreiben.
Es gibt so viele varianten, da hätte der Platz nicht gereicht ...
Trotzdem danke, netter Versuch ...

Robi

Pikachu
10-01-14, 12:01
...
(select text,
trim(translate(xor(text,
translate(text,x'00000000000000000000',
'0123456789')),
' ', x'00'))
from daten)
...

Boah, krass!

Alfred E. Neumann
10-01-14, 15:11
das Beispiel gibts in diesem Forum
http://forums.iprodeveloper.com/forums/aff/203
unter dem Titel "XOR - it works but why and how" o.s.ä.
habe den Beitrag nicht mehr gefunden

ILEMax
11-01-14, 09:32
http://forums.iprodeveloper.com/forums/aft/149235#768720