use*_*460 2 sql oracle null sql-like
基本上我有一组用户可以搜索的字段.所以我写了一个表格的查询:
SELECT *
FROM my_addr_vw
WHERE fname LIKE :l_fname
AND mname LIKE :l_mname
AND lname LIKE :l_lname;
Run Code Online (Sandbox Code Playgroud)
当用户未将任何值传递给任何条件时,我假设为'%'.
这样做,如果一个记录有NULL或没有值,比方说,mname - 然后记录下降....什么是这个问题的一个很好的解决方案没有匹配!
几乎任何比较NULL产生一个未知的(我认为作为NULL比较的结果).这包括like- 对于模式和被比较的字符串.
where只有当比较为TRUE时,该子句才允许行通过.因此,FALSE和unknown都被过滤掉了.
这解释了这NULL件作品.这''有点深奥,因为这里的Oracle与其他数据库和标准不同.Oracle将NULL空字符串视为相同.所以,''它实际上只是NULL(使用默认的Oracle设置)的同义词.所以,你无法将任何东西与空字符串匹配,就像你无法匹配任何东西一样NULL.