Php Oracle:匹配表达式,如果表达式为null,则返回该列的所有记录
我有一个搜索表单,用户可以在其中搜索数据库中的某些字段。如果字段留空,则可以匹配任何内容,包括null。如果在字段中输入了内容,则应与该字段匹配,包括通配符 我使用php作为服务器端语言 问题是,如果搜索字段为空,我不能只使用php并将其转换为“%”,因为它将不匹配null。(假设where子句与$value类似)。此外,我不能使用“fieldA like$value或fieldA为NULL”,因为这样它将返回所有匹配的字段和NULL字段Php Oracle:匹配表达式,如果表达式为null,则返回该列的所有记录,php,sql,oracle,Php,Sql,Oracle,我有一个搜索表单,用户可以在其中搜索数据库中的某些字段。如果字段留空,则可以匹配任何内容,包括null。如果在字段中输入了内容,则应与该字段匹配,包括通配符 我使用php作为服务器端语言 问题是,如果搜索字段为空,我不能只使用php并将其转换为“%”,因为它将不匹配null。(假设where子句与$value类似)。此外,我不能使用“fieldA like$value或fieldA为NULL”,因为这样它将返回所有匹配的字段和NULL字段 在SQL语句中是否有一种(相当简单的方法)实现这一点?目
在SQL语句中是否有一种(相当简单的方法)实现这一点?目前,我在PHP中构建where子句,它相当麻烦。您尝试的解决方案是检查错误的项的可空性 如果参数为NULL,则需要一条记录始终生成TRUE;如果字段与参数匹配,则需要一条记录始终生成TRUE
WHERE
fieldA LIKE $value
OR $value IS NULL
如果字段留空,则可以匹配任何内容,包括null
那么,在这种情况下,为什么不一起省略where子句呢
case 1: user enters "ABC"
select * from my_table where fieldA like 'ABC%';
case 2: user leaves blank
select * from my_table;
顺便说一句,小心SQL注入