当没有行从表返回时,如何返回默认值



当表errormessage不包含满足" where"条件的行时,ifnull失败了,我的null不满,而不是Ifnull子句中提供的默认值。

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)

当route_id ='ipn4'中没有行时,输出应为:

errorCode = NOERRORCODE
errorText = NOERROR

,但我得到了空/空值。我该如何解决?

您可以使用NOT EXISTSUNION ALL

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

您需要用实际标准替换<condition>。因此,当存在行时,将执行UNION ALL之后的SELECT,这将显示静态行。

请注意:我从未使用过HSQLDB,所以我不确定如何显示静态行,但是我在此处使用了

相关内容

  • 没有找到相关文章

最新更新