Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL IfNull()函数不支持';无法识别空字符串_Mysql_Sql_Database_Jsp_Web - Fatal编程技术网

Mysql SQL IfNull()函数不支持';无法识别空字符串

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

我正在开发一个数据库搜索页面(使用jsp),在这个搜索页面中,用户将以下拉列表的形式拥有多个搜索条件/选项,这些选项可以不选中(换句话说为null),如果不选中,则应检索完整的列。为了实现这一点,我使用ifnull()函数,并使用MySQL

我面临的问题是,SQL似乎无法识别字符串为null,当在ifnull函数中传递null字符串时,它会检索null值,而不是检索完整的列。在查询“ifnull(NULL,Location)”中直接传递NULL似乎工作得很好

名单如下:

       <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);
}