2016-07-27 10 views
0

in der folgenden Abfragekann nvl einen anderen Datentyp als Argument zurückgeben?

select nvl(gender, 'not available') from member

Ich möchte die Abfrage 'nicht verfügbar' zurückgibt, wenn Geschlecht null ist. aber es scheint, dass das zweite Argument der gleiche Datentyp wie das erste Argument sein muss (in diesem Beispiel ist das Geschlecht CHAR (1), aber das zweite Argument ist varchar oder char (n) und nicht CHAR (1). Gibt es eine andere Lösung?) Ändern Datentyp in Haupttabelle? ich benutze Amazon Redshift. ich die NVL-Anweisung in der Gruppe durch und bin mit, damit ich die Lösung muß so viel wie möglich präzise sein.

+0

Was ist der Datentyp von Geschlecht? Was ist der Fehler? Sie können sie in der Auswahl in eine Zeichenfolge umwandeln, anstatt den Typ der Spalte in der Tabelle zu ändern. –

+0

Dies kann von der verwendeten DB abhängen, bitte fügen Sie ein Tag für das relevante DBMS hinzu. –

+1

Verwenden Sie 'coalesce()'. Es ist die ANSI-Standardversion und in mehr Datenbanken verfügbar. –

Antwort

1

Sie können mit Fall versuchen

select case gender when is null then 'not available' else gender 
from my_table 
+0

Ja, es funktioniert, aber ich möchte es in der Gruppe verwenden, gibt es eine prägnante Lösung? – sia

+0

Gut für die Gruppe von Ihnen sollte eine neue richtig beschriebene Frage posten .. Ich kann mir nicht vorstellen, Ihr Problem durch die eigentliche Frage und ist nicht fair eine Frage in einem anderen .. so, wenn meine Antwort richtig ist, bitte markieren Sie als akzeptiert .. Post die neue Frage und schließlich kommentieren mich die neue Verbindung – scaisEdge

-1

Dies funktioniert:

Geschlecht finden erste (SELECT Geschlechts Mitglied WHERE .....)

if gender is null 
begin 
select 'not available' as result 
end 
else 
begin 
<-- do your query--> 
end 
+0

Es gibt kein 'if' in SQL (und selbst wenn es war - wo kommt' Geschlecht' her? Es ist eine Spalte in einer Tabelle) –

+0

sollte er Geschlecht zuerst finden (Geschlecht auswählen FROM Mitglied WHERE .....) als das laufen. Es tut mir leid, wenn es keine IF gibt. – abcool