SELECT MAX(date)
FROM abc
WHERE
p_id=p_p_id
AND nvl(c_number,0)=nvl(p_c_number,0)
AND nvl(m_number,0)=nvl(p_m_number,0)
AND nvl(s_number,0)=nvl(p_s_number,0);
在上面的查询中,p_p_id,p_c_number,p_m_number& p_s_number传递给此查询,但此查询在某些条件下给出错误的输出: 在表abc c_number中,m_number,s_number可以是null,零或任何其他值 我想匹配c_number如果null与p_c_number如果为null 但是上面查询的问题是,如果c_number为null,则将零分配给c_number,如果p_c_number已经为零,则它将null与零值匹配 请帮助..我正在使用oracle作为rdbms
答案 0 :(得分:2)
尝试使用以下
替换每个nvl
条件
AND (c_number = p_c_number OR (c_number IS NULL AND p_c_number IS NULL))
或pst表示
AND (c_number = p_c_number OR COALESCE(c_number, p_c_number) IS NULL)