2009-05-07 12 views
0

In einem meiner resultsets habe ich eine Spalte mit char - data. Ich möchte eine weitere Spalte erstellen, die geänderte Daten aus der ersten Spalte enthält. Dort möchte ich alle 'ö' mit oe austauschen.Problem mit Replace - Funktion

Ich habe versucht, es wie folgt aus:

Select NAME1, 
    case when POSSTR(NAME1, 'ö') is not null then REPLACE(NAME1, 'ö', 'oe') 
    end As __NAME1 
from xyz; 

und es ist fehlgeschlagen. Ich bekomme keinen Fehler, aber der ö wird nicht ersetzt.

Mache ich einen Fehler oder ist es einfach nicht möglich, diesen Vorgang durchzuführen?

Danke! Patrick

+0

Ihre eigentliche Frage nicht scheinen mit Ihrem Fragetitel übereinzustimmen, da das Problem darin besteht, dass eine der Funktionen nicht richtig funktioniert und nicht die Tatsache, dass Sie Namen für sie erstellen. Fehle ich etwas? –

+1

Können Sie versuchen, WHERE POSSTR (NAME1, 'ö') NOT NULL zur Abfrage hinzuzufügen? Das wird Ihnen zumindest sagen, welche Funktion nicht wie erwartet funktioniert. –

+0

Sie haben Recht mit dem Titel. Ich habe es geändert. –

Antwort

1

Gemäß der DB2-Dokumentation gibt POSSTR 0 (nicht NULL) zurück, wenn die Zeichenfolge nicht gefunden wird.

+0

Es funktioniert, wenn die Abfrage wie folgt lautet: Wählen Sie cu.NAME1, Fall WHEN (POSSTR (niedriger (cu.NAME1), 'ö') <> 0) THEN '-------' ELSE '-' Ende Als CusName1, mit der Abfrage unten bekomme ich keinen Fehler aber der ö wird auch nicht geändert. Ich denke, dass etwas mit meiner Verwendung der Ersetzungsfunktion nicht stimmt? WANN (POSSTR (niedriger (cu.NAME1), 'ö') <> 0) DANN ERSETZEN (niedriger (cu.NAME1), 'ö', 'oe') –

+0

Ist es möglich, die Kommentare irgendwie besser zu formatieren? –

1

Sie möchten, dass Sie Ihre zweite Spalte alle Zeilen aufzulisten, die beide geändert und unverändert Sie können einfach verwenden:

Select 
    NAME1, 
    REPLACE(NAME1, 'ö', 'oe') As __NAME1 
from xyz; 

auch können Sie dies testen:

Select 
    NAME1, 
    REPLACE(NAME1, 'ö', 'oe') As __NAME1 
from 
    xyz 
where 
    POSSTR(NAME1, 'ö') <> 0