【问题标题】:How to use IS NULL in query from php如何在来自 php 的查询中使用 IS NULL
【发布时间】:2019-01-17 08:36:53
【问题描述】:

我正在尝试从 php 运行查询。 WHERE 子句的一部分包括 IS NULL
在这种情况下,我没有得到任何记录。
示例:

SELECT * FROM TABLE WHERE ITEM IS NULL"

没有返回记录。当直接在 PL/SQL 中测试时,我得到了记录。

SELECT * FROM TABLE WHERE ITEM ='cars'"

检索到的记录运行良好。

在查询中使用 IS NULL 时 PHP 会拒绝吗?

【问题讨论】:

  • 错误一定在其他地方。

标签: php sql oracle


【解决方案1】:

它实际上是 NULL 还是只是空的?

SELECT * FROM TABLE WHERE ITEM =''

此查询将检查您的行字段是否为

SELECT * FROM TABLE WHERE ITEM IS NULL 

将检查行字段是否为null

这个答案很好地了解了他们的区别:

Check it here

【讨论】:

  • IN PL/SQL SELECT * FROM TABLE WHERE ITEM ='' 不提供记录,而 SELECT * FROM TABLE WHERE ITEM IS NULL 提供记录。
  • 在 '=' 之后应该有 2 个单引号而不是 1 个双引号。只有当字段中的值为空时,IS NULL 才有效。如果为空,则需要使用 2 个单引号
  • 我很困惑... Oracle 在 non-standard way 中处理空字符串,所以 ITEM ='' 永远不会匹配任何内容,ITEM IS NULL 将匹配这两种情况。此外,尚不清楚谁使用 PHP 作为客户端可以更改此语义。
  • 正如@ÁlvaroGonzález 所说,这个答案对于'' and NULL are identical 的Oracle 数据库是不正确的。过滤WHERE ITEM = ''WHERE ITEM = NULL 相同,并且永远不会匹配任何行。
【解决方案2】:

设法解决并添加 AND 1=1 并工作。

从表中选择 *,其中项目为 NULL 且 1=1

【讨论】:

  • 我坚持:一定有其他事情发生。问题被标记为 php 所以你肯定有比这更复杂的代码。
猜你喜欢
  • 2021-05-16
  • 1970-01-01
  • 2023-03-29
  • 2017-05-09
  • 2022-11-14
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多