Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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语法检查参数是否为null_Mysql_Database - Fatal编程技术网

MySQL语法检查参数是否为null

MySQL语法检查参数是否为null,mysql,database,Mysql,Database,如果给定的参数存在,我正在寻找执行MySQL语句检查的方法。我记得我可以在Oracle中执行以下操作来实现这一点: select s.* from Site s where s.study = :study and (:enabled is null or s.enabled = :enabled) 在MySQL中也可以这样做吗?相同的代码执行时没有错误,但从不返回任何记录 我的目标是在java代码中避免多个LF和ELSE。它的工作方式应与启用参数为null时的查询类似: select s.

如果给定的参数存在,我正在寻找执行MySQL语句检查的方法。我记得我可以在Oracle中执行以下操作来实现这一点:

select s.* from Site s 
where s.study = :study
and (:enabled is null or s.enabled = :enabled)
在MySQL中也可以这样做吗?相同的代码执行时没有错误,但从不返回任何记录

我的目标是在java代码中避免多个LF和ELSE。它的工作方式应与启用参数为null时的查询类似:

select s.* from Site s 
where s.study = :study
如果参数不为null,则如下所示:

select s.* from Site s 
where s.study = :study
and s.enabled = :enabled

我想通过一个查询来实现这一点

我相信这就是你要问的:

SELECT s.* from Site s
WHERE s.study = "some_study"
AND (s.enabled IS NULL OR s.enabled = '' OR s.enabled = "enabled");

我相信这就是你要问的:

SELECT s.* from Site s
WHERE s.study = "some_study"
AND (s.enabled IS NULL OR s.enabled = '' OR s.enabled = "enabled");

不幸的是,它高度依赖于数据库驱动程序。在数据库工具中运行时,我的初始查询可以工作,但在JPA中运行时不必这样做。所以我结束这个问题,因为它不需要进一步的回答。很抱歉,小伙子们浪费了你们的时间。

不幸的是,它高度依赖于数据库驱动程序。在数据库工具中运行时,我的初始查询可以工作,但在JPA中运行时不必这样做。所以我结束这个问题,因为它不需要进一步的回答。很抱歉,小伙子们浪费了你们的时间。

和(s.enabled为NULL或s.enabled=:enabled)
:enabled为NULL
是毫无意义的-你们可以在客户端代码中简单地检查它,而不用使用db来做,因为
:enabled
值是你们提供的值。您需要检查中的字段是否为空,这意味着您需要测试
s.enabled
。如果您认为所有可能的情况下只有一个查询,那么这并不是毫无意义的。没有如果和其他人。这很有用。目标是检查参数,而不是列,如果参数确实为null,则禁用该查询中的整行。
和(s.enabled为null或s.enabled=:enabled)
:enabled为null
是毫无意义的-您可以在客户端代码中轻松检查,而无需使用db来执行此操作,因为
:enabled
值是您提供的值。您需要检查中的字段是否为空,这意味着您需要测试
s.enabled
。如果您认为所有可能的情况下只有一个查询,那么这并不是毫无意义的。没有如果和其他人。这很有用。目标是检查参数,而不是列,如果参数确实为null,则禁用该查询中的整行。事实并非如此,我的目标是检查参数是否存在,而不是列。这是为了避免java代码中出现多个ifs和else。在Oracle中,我可以做到这一点,而不在乎这个值的存在。如果parametre为null,SQL解析器将忽略该行,这样就不会影响query@smoczyna,可能更符合您的需要?事实并非如此,我的目标是检查参数是否存在,而不是列。这是为了避免java代码中出现多个ifs和else。在Oracle中,我可以做到这一点,而不在乎这个值的存在。如果parametre为null,SQL解析器将忽略该行,这样就不会影响query@smoczyna,也许你需要的更多?