【问题标题】:"WHERE column IS NOT NULL" with Kohana v3 Query BuilderKohana v3 查询生成器的“WHERE 列不为空”
【发布时间】:2010-09-26 00:50:02
【问题描述】:

Kohana v3 Query Builder 是否可以使用 IS NOT NULL 运算符?

where($column, $op, $value) 方法需要所有三个参数,即使我指定了

->where('col', 'IS NOT NULL', '')

它构建和无效的查询,例如。

SELECT * FROM table WHERE col IS NOT NULL '';

【问题讨论】:

  • v3 很好。你离得太近了!您所要做的就是将 NULL 移至 value 参数:->where('col', 'IS NOT', NULL)
  • 现在 v3 有更好的文档,我有机会习惯它——我非常享受它。

标签: php mysql database kohana kohana-3


【解决方案1】:

操作符没有转义:

->where('col', 'IS NOT', NULL)

无需使用 DB::expr,Kohana 已经支持你想要的了。

【讨论】:

    【解决方案2】:

    这适用于 ORM 模块,并且输入更少。

    ->where('col', '!=', NULL);
    

    【讨论】:

      【解决方案3】:

      不确定(现在是凌晨 3 点),但 ->where('col', '', DB::expr('IS NOT NULL')) 可能有效。

      【讨论】:

      • 天才。先生,您是圣人。
      • 我认为最好将'IS NOT'作为第二个参数并且值只是NULL。就像格里回答的那样。使用 DB::expr 很好,但会增加不必要的额外开销(在这种情况下)
      • 是的,最好的解决方案是 ->where('col', 'IS NOT', NULL)
      【解决方案4】:

      WHERE 子句接受 3 个参数,第一个和第三个参数总是试图转换为反引号格式(即 `table`.`field`)。只要您至少在第三个参数上提供 DB::Expr,您就可以在第一个和第二个参数中不留下任何内容,并且以下内容也应该有效:

      ->where('', '', DB::Expr('!isNull(col)'));
      

      这已确认可在 Kohana 3.2 及更高版本上运行。

      【讨论】:

        【解决方案5】:

        这应该可行:

        ->where('col', '=', NULL);
        

        【讨论】:

        • 那是检查值是否为null,OP想要的不是null。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 2015-12-14
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 2018-12-26
        相关资源
        最近更新 更多