2017-09-20 3 views
1

Ich versuche, eine Spalte zu einer Ansicht hinzuzufügen, in der ich den folgenden Code verwende, um nur den Nachnamen aus einem Feld zu ziehen, das formatiert ist ‚Nachname, Vorname‘:Unterstützung für SQL Case-Anweisung zum Auswählen aus einer Spalte mit einem Komma

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(',', A.PREVIOUS_NAMES)-1)), '') 
AS "PREVIOUS_NAME", 

Dies funktioniert gut, wenn es ein Komma in dem Gebiet ist jedoch, wie sich aus der folgenden Frage verwiesen, die Fehler anzeigen, wenn ein Komma ist nicht vorhanden.
SQLCode=-138 flagging on large count tables but not small DB2

Ich habe versucht, mit einem Fall Aussage zu kommen diese aufzunehmen, zu wählen, wenn das Komma vorhanden ist, aber ich habe nicht erfolgreich gewesen, und ich suche Hilfe oder Anregungen von erfahren Leuten.

RTRIM(
    CASE WHEN LOCATE(",", A.PREVIOUS_NAMES) = 0 
    THEN A.PREVIOUS_NAMES 
    ELSE SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(",", A.PREVIOUS_NAMES)-1) 
    END) AS "PREVIOUS_NAME" 

Es ist nicht sehr anspruchsvoll, und es gibt mir SQLCODE-206 sagen „im Kontext wird es verwendet, nicht gültig ist“.

Danke für jede Hilfe, die Sie anbieten können!

Antwort

0

Ich habe das nicht in DB2 getan, aber eine gängige Methode, um dies ist ein Komma hinzuzufügen:

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES, 1, LOCATE(',', A.PREVIOUS_NAMES || ',') - 1)), '') 
AS "PREVIOUS_NAME", 
+0

Dies tat genau das, was ich erreichen wollte. Vielen Dank Gordon. – XB1213

Verwandte Themen