Le problème est qu'Oracle (par défaut) traite les chaînes vides comme NULL
. D'où :
where name = ''
est identique à :
where name = NULL
et les deux échouent toujours (car ils renvoient NULL
).
Vous pouvez résoudre ce problème de différentes manières. Une méthode est :
where (name = INPUT or name is null and INPUT is null)
Ou, si vous savez qu'il y a un nom invalide :
where coalesce(name, '<invalid>') = coalesce(INPUT, '<invalid>')