Hier wäre meine Vorschläge sein:
PostgreSQL und anderen SQL-Datenbanken, in denen 'a' || NULL IS NULL
:
select firstname || coalesce ('-' || middlename, '') || '-' || surname ...
Oracle und anderen SQL-Datenbanken, in denen 'a' || NULL = 'a'
:
select first name || decode (middlename, NULL, '', '-' || middlename) || '-' || surname...
ich für Prägnanz gehen möchten . Hier ist es für einen Wartungsprogrammierer nicht sehr interessant, ob der zweite Name leer ist oder nicht. CASE-Switches sind völlig in Ordnung, aber sie sind sperrig. Ich möchte vermeiden, den gleichen Spaltennamen ("zweiter Vorname") wo immer möglich zu wiederholen.
Wie @Prdp bemerkte, ist die Antwort RDBMS-spezifisch. Spezifisch ist, ob der Server eine Zeichenfolge mit der Länge null behandelt, die der NULL
entspricht, die bestimmt, ob die Verkettung einer NULL
eine NULL
ergibt oder nicht.
Im Allgemeinen ist COALESCE
am prägnantesten für die PostgreSQL-Stil leere Zeichenfolge Handhabung und DECODE (*VALUE*, NULL, ''...
für Oracle-Stil leere Zeichenfolge Handhabung.
Sie markieren Sie müssen zurück die * * RDBMS **, das Sie verwenden. Im Allgemeinen * Zeichenfolge Verkettung * unterscheidet sich mit jedem Anbieter –
Basierend auf der beliebten vier Datenbank, es ist entweder Oracle oder PostgreSQL –