ERLEDIGT
NEIN
NEIN
ANTWORTEN
16
16
ZUGRIFFE
588
588
EMPFEHLEN
-
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ß
-
Hallo,
Aber dein "Retourschlüssel" ist in einer Tabelle gespeichert ?
-
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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
GrussGeändert von dbwizard (25.08.10 um 14:12 Uhr)
-
Hi,
für was steht denn in der Funktion dasund geht es nicht mit IF?'^(.)'
GrußGeändert von roox2010 (25.08.10 um 14:55 Uhr)
-
Hallo, dies bedeutet "das Erste Zeichen (egal welches) in einem String"
-
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?
-
- Wie verwendest du diese Funktion ?
-
Ich will/soll die Funktion mit dem SQL-Developer verwenden!
-
Ehemm , ja

Also, dann mal ein Beispiel :
Zuerst die Funktion :
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
CREATE OR REPLACE FUNCTION f_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_found THEN RETURN NULL; END; /
.... Dann eine Testtabelle ...mit ein paar Werten....
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CREATE TABLE TEST_REGEXP ( ID NUMBER ) / INSERT INTO test_regexp VALUES(12545454); INSERT INTO test_regexp VALUES(343435345); INSERT INTO test_regexp VALUES(345345345); INSERT INTO test_regexp VALUES(97666); INSERT INTO test_regexp VALUES(55); INSERT INTO test_regexp VALUES(1); COMMIT;
..Und nun benutzen wir die Funktion in eine "stinknormalen" SQL :
Code :1 2
SELECT a.id, f_test_regexp (a.id) AS umgewandelter_wert FROM test_regexp a;
..und kriegen als Ergebnis :
Code :1 2 3 4 5 6 7 8 9
ID UMGEWANDELTER_WERT --------- ------------------ 12545454 N2545454 343435345 N43435345 345345345 N45345345 97666 N7666 55 N5 1 N
Hoffe, dass hilft
Gruss
(Hmm...wie formatiert man SQL hier im Forum richtig ****?)Geändert von dbwizard (25.08.10 um 15:34 Uhr)
-
Also bis jetzt hat es mir noch nich geholfen!
Habe vorher auch nichts anders gemacht!
Nur hat meine Tabelle nicht nur diese eine Spalte kommt der Fehler vll. daher?
Gruß
Edit:
Ok hat funktioniert
Vielen Dank!
Kann ich in die Funktion noch irgendwie reinbekommen, dass es auch Umgekehrt funktioniert!? Also wenn die Daten mit N beginnen das eine 1 hinkommt?Geändert von roox2010 (25.08.10 um 15:57 Uhr)
-
Vergiss das mit dem Umgekehrten!

Nur wie kann ich ihm jetzt noch sagen das alle anderen Werte (die nicht mit 1 beginnen) eine U an erster Stelle haben sollen?
Was ich gerne noch wissen möchte, wäre wieso ichin der Funktion schreibe bzw. für steht das?FROM DUAL
Sorry dass ich so viel frage aber ich such schon so lange und komm auf keine gute Lösung!
Danke nochmal!
-
Hi,
kann mir dazu keiner mehr einen Ratschlag geben?
Gruß Tim
Ähnliche Themen
-
Oracle Datenbank Connect
Von AJAX Lauch im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 20.12.07, 14:37 -
Verbindungsprobleme mit Oracle Datenbank
Von tekilla209 im Forum JavaAntworten: 33Letzter Beitrag: 07.11.07, 09:37 -
Oracle Datenbank anlegen
Von Balian im Forum Relationale DatenbanksystemeAntworten: 12Letzter Beitrag: 01.11.07, 15:27 -
Import in Oracle 10g Datenbank
Von liam im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 29.09.06, 18:47 -
Oracle Datenbank
Von riddler2kone im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 06.03.02, 09:54





Zitieren
Login




