markwaldhoff
28-06-2005, 06:47
Ich möchte eine ID für Anreden vergeben. Das soll so aussehen das die Anrede "Frau" die ID 0001 hat und "Herr" die ID 0002.
Mir stehen bereits Daten zur Verfügung die so aussehen:
Herr Matthias
Fr. Hildegar
H. Obersdorf
H Hildesheim
Mrs. Ales Chapelle
Mr Hop
Wie Ihr sehen könnt ist das sehr schön gemischt... und sehr gut durchdacht... :mad:
Naja... jedenfalls muss ich jetzt zu jedem Datensatz die richtige ID vergeben (soweit eine Andrede vorhanden ist) und dann später noch jeweils die Anrede (wenn sie da ist) "abschneiden", so das nur noch der Rest im Feld stehen bleibt....
Zum ersten Punkt habe ich mir schon was überlegt, was auch funktioniert. Jedoch weiß ich nicht wie ich ein "oder" in der If Abfrage unterbringe ?!?!?
In Java etc. kann man doch sowas machen:
if var1 = 'test' || var2 = 'test2' || var2 = 'test'
.....
Ist sowas in PLSQL nicht möglich , oder funktioniert das anders ???
Jedenfalls ist das die Funktion die ich bis jetzt habe:
CREATE OR REPLACE FUNCTION RPL_ANREDE (NAME varchar2) RETURN varchar2 IS
anrede varchar2(4);
zaehler integer;
l_name varchar2(50);
BEGIN
anrede := ' ';
l_name := LOWER(NAME);
zaehler := instr(l_name,' ');
zaehler := zaehler - 1;
IF substr(l_name,1,zaehler) = 'frau' THEN
anrede := '0001';
END IF;
IF substr(l_name,1,zaehler) = 'herr' THEN
anrede := '0002';
END IF;
RETURN anrede;
END;
/
Es geht jetzt zunächst mal darum das ich die beiden IF-Zweige jeweils noch mit anderen Werten belege...also beim ersten soll dann z.B. diese Wertemenge geprüft werden: {frau,fr,mrs,mdm,f...}
Wie mache ich das am besten und am einfachsten ?
Mir stehen bereits Daten zur Verfügung die so aussehen:
Herr Matthias
Fr. Hildegar
H. Obersdorf
H Hildesheim
Mrs. Ales Chapelle
Mr Hop
Wie Ihr sehen könnt ist das sehr schön gemischt... und sehr gut durchdacht... :mad:
Naja... jedenfalls muss ich jetzt zu jedem Datensatz die richtige ID vergeben (soweit eine Andrede vorhanden ist) und dann später noch jeweils die Anrede (wenn sie da ist) "abschneiden", so das nur noch der Rest im Feld stehen bleibt....
Zum ersten Punkt habe ich mir schon was überlegt, was auch funktioniert. Jedoch weiß ich nicht wie ich ein "oder" in der If Abfrage unterbringe ?!?!?
In Java etc. kann man doch sowas machen:
if var1 = 'test' || var2 = 'test2' || var2 = 'test'
.....
Ist sowas in PLSQL nicht möglich , oder funktioniert das anders ???
Jedenfalls ist das die Funktion die ich bis jetzt habe:
CREATE OR REPLACE FUNCTION RPL_ANREDE (NAME varchar2) RETURN varchar2 IS
anrede varchar2(4);
zaehler integer;
l_name varchar2(50);
BEGIN
anrede := ' ';
l_name := LOWER(NAME);
zaehler := instr(l_name,' ');
zaehler := zaehler - 1;
IF substr(l_name,1,zaehler) = 'frau' THEN
anrede := '0001';
END IF;
IF substr(l_name,1,zaehler) = 'herr' THEN
anrede := '0002';
END IF;
RETURN anrede;
END;
/
Es geht jetzt zunächst mal darum das ich die beiden IF-Zweige jeweils noch mit anderen Werten belege...also beim ersten soll dann z.B. diese Wertemenge geprüft werden: {frau,fr,mrs,mdm,f...}
Wie mache ich das am besten und am einfachsten ?