Mysql SQL IfNull()函数不支持';无法识别空字符串
我正在开发一个数据库搜索页面(使用jsp),在这个搜索页面中,用户将以下拉列表的形式拥有多个搜索条件/选项,这些选项可以不选中(换句话说为null),如果不选中,则应检索完整的列。为了实现这一点,我使用ifnull()函数,并使用MySQL 我面临的问题是,SQL似乎无法识别字符串为null,当在ifnull函数中传递null字符串时,它会检索null值,而不是检索完整的列。在查询“ifnull(NULL,Location)”中直接传递NULL似乎工作得很好 名单如下:Mysql SQL IfNull()函数不支持';无法识别空字符串,mysql,sql,database,jsp,web,Mysql,Sql,Database,Jsp,Web,我正在开发一个数据库搜索页面(使用jsp),在这个搜索页面中,用户将以下拉列表的形式拥有多个搜索条件/选项,这些选项可以不选中(换句话说为null),如果不选中,则应检索完整的列。为了实现这一点,我使用ifnull()函数,并使用MySQL 我面临的问题是,SQL似乎无法识别字符串为null,当在ifnull函数中传递null字符串时,它会检索null值,而不是检索完整的列。在查询“ifnull(NULL,Location)”中直接传递NULL似乎工作得很好 名单如下: <s
<select name="EX">
<option value="NULL">Any</option>
<option value="1">Option1</option>
<option value="2">Option2</option>
<option value="3">Option3</option>
</select>
我的问题是:
selectItem = connection.prepareStatement("SELECT Location, ItemType "
+ "FROM DBTEST "
+ "WHERE Location = IFNULL(?,Location)"
尝试:
尝试设置空值:
prepStmt.setNull(1, Types.VARCHAR)
关于Sas答案的一些细节。在SQL中,null是一个特殊值,任何int或字符串都不能等于null 在查询中,必须使用特殊构造
IS NULL
来测试空值,因为column=NULL
永远不会为真
使用主变量时,必须使用setNull
方法明确地将它们设置为NULL
您不会显示如何填充查询,但您需要的内容应该离以下内容不远:
selectItem = connection.prepareStatement("SELECT Location, ItemType "
+ "FROM DBTEST "
+ "WHERE Location = IFNULL(?,Location)");
if (NameVar == null) {
selectItem.setNull(1, Types.VARCHAR);
}
else {
selectItem.setString(1, NameVar);
}
顺便说一句,java中的常见用法建议只有类名以大写字母开头,变量名应该以小写字母开头,因此NameVar
应该是NameVar
prepStmt.setNull(1, Types.VARCHAR)
selectItem = connection.prepareStatement("SELECT Location, ItemType "
+ "FROM DBTEST "
+ "WHERE Location = IFNULL(?,Location)");
if (NameVar == null) {
selectItem.setNull(1, Types.VARCHAR);
}
else {
selectItem.setString(1, NameVar);
}