2017-10-04 1 views
0
zurückgegeben werden

Wenn die Tabelle ERROMESSAGE keine Zeilen enthält, die die "WHERE" Bedingung erfüllen, schlägt IFNULL fehl und ich bekomme NULL, nicht den Standardwert in der IFNULL-Klausel.Wie Standardwert zurückgegeben wird, wenn keine Zeilen von Tabelle

errorCode = NOERRORCODE 
errorText = NOERROR 

Aber ich habe null/leer Werte:

select IFNULL(errorCode , 'NOERRORCODE') as "errorCode", 
    IFNULL(errorText , 'NOERROR') as "errorText" from 
    (select errorcode, 
     IFNULL((select errorText from STATIC_ERRORCODES a 
     where a.errorcode = b.errorcode), '') as errorText 
    from ERRORMESSAGE b where b.route_id = 'IPN4' 
    order by b.row_index) 

Wenn es keine Zeilen in FEHLERMELDUNG mit route_id = 'IPN4', sollte die Ausgabe sein. Wie kann ich das beheben?

Antwort

1

könnten Sie verwenden NOT EXISTS und UNION ALL

SELECT errorCode, errorText 
FROM ERRORMESSAGE WHERE <condition> 
UNION ALL 
SELECT 'NOERRORCODE', 'NOERROR' 
FROM ERRORMESSAGE 
WHERE NOT EXISTS (SELECT * FROM ERRORMESSAGE WHERE <condition>) 

Sie müssen mit den tatsächlichen Kriterien ersetzen <condition>. Wenn also eine Zeile existiert, wird SELECT nach ausgeführt, was eine statische Zeile anzeigt.

Bitte beachten Sie: Ich habe HSQLDB nie benutzt, so war ich nicht sicher, wie statische Zeilen zu zeigen, aber ich verwenden als explained here

+0

Dank Mann .. mit einigen Modifikationen, es funktionierte großartig !! – keanu

+0

@keanu Sie müssen es akzeptiert akzeptieren, so dass es für andere hilfreich wäre. – Ravi

Verwandte Themen