Oracle-Datenbank mit function

roox2010

Grünschnabel
Hi,
ich möchte aus meiner Datenbank (aus einer Spalte) Zahlen suchen und bei diesen die Anfangszahl durch einen Buchstaben ersetzen!

Ich habe es mit der if-Klausel versucht, bis jetzt ohne Erfolg!

Sieht wie folgt aus:

if nummer = '1*' then
nummer = 'N*'

Das mit dem * funktioniert aber nicht, nun würde ich gern wissen wie ich das angebe, dass alle Zahlen die mit 1 beginnen gesucht werden und die 1 durch N ersetzt wird!

Vielen Dank im Vorraus für eure Antworten! :)

Grüße
roox2010
 
Hallo,

Kannst du deinen kompletten SQL posten ? Mit diesem Fragment ist Hilfe etwas schwer zu geben. Möchtest du die Werte in der Tabelle updaten oder nur den Ausgabwert umformatieren ?

Gruss
 
Hi,

create or replace function retour3
return varchar2
is retourenschluessel varchar2(30);

begin

if retourenschluessel like '1*' then
retourenschluessel := 'N*';
end if;

return(retourenschluessel);

end;


Ich möchte den Ausgabewert umformatieren, aber es wäre nett wenn du/ihr mir zum Updaten auch einen Lösungsvorschlag machen könntet!

Gruß
 
Hi,
ja das ist er!
Muss ich da dann noch einen Cursor erstellen?
Also ich hätte gerne eine Funktion die mir den Schlüssel mit einem N anstatt der 1 am Anfang anzeigt und wenn es möglich ist auch wieder umgekehrt!

Gruß
 
Hi,
ja das ist er!
Muss ich da dann noch einen Cursor erstellen?
Also ich hätte gerne eine Funktion die mir den Schlüssel mit einem N anstatt der 1 am Anfang anzeigt und wenn es möglich ist auch wieder umgekehrt!

Gruß

Ich habe dir mal eine Funktion geschrieben, welche eine ID (Deinen PK in deiner Tabelle) entgegennimmt und die Umformatierung vornimmt. Voraussetzung dafür ist mindestens Oracle 10, da es mit Regexp arbeitet :
Code:
FUNCTION test_regexp (i_nmy_id IN NUMBER)

    RETURN VARCHAR
IS
    l_sresult   VARCHAR2 (20);
BEGIN
    SELECT (REGEXP_REPLACE (TO_CHAR (i_nmy_id), '^(.)', 'N'))
      INTO l_sresult
      FROM DUAL;


    RETURN l_sresult;
EXCEPTION
    WHEN no_data_dound
    THEN
        RETURN NULL;
END;


- Diese Funktion liefert jeweils die Konversion für genau einen Datensatz, wenn du mehrer Row's verarbeiten willst, musst du einen Cursor implementieren und zurückgeben

Gruss
 
Zuletzt bearbeitet:
Hi,
also ich hab es mit der Funktion probiert, bekomme dann aber eine fehlermeldung:

ORA-01422: exact fetch returns more than requested number of rows

Woran könnte das liegen?
 

Neue Beiträge

Zurück