当表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 EXISTS
和UNION 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,所以我不确定如何显示静态行,但是我在此处使用了