数据库查询中 is not null 和<>null是不等价的

下午修改Typecho主题想把首页文章过滤的功能集成到主题,高级查询其实很简单直接继承Widget_Abstract_Contents以及其子类都可以,重写一下select()方法就可以了。传过来的参数使用逗号隔开,explode函数分割就行。

class XMP_Post_Query extends Widget_Abstract_Contents {
    public function execute() {
        ...(省略部分代码)
        if (isset($this->parameter->excludeTemplate) && $this->parameter->excludeTemplate !== "") {
            $ext_arr = array_unique(explode(",", $this->parameter->excludeTemplate));
            foreach ($ext_arr as $ext) {
                $select = $select->where('table.contents.template <> ?', $ext);
            }
        }
    }
}

其中的关键语句$select = $select->where('table.contents.template <> ?', $ext);是我想当然写的,尝试了1个多小时,改来改去,我怀疑各种转义拼接导致问题,结果都不是。
没办法了,下载SQL Expert在数据库里操作把。

select title,type,template from typecho_contents where(type = 'post') and (template != 'post-note.php')
(结果是空的???)

那我再尝试一下template = null,还是空的。。。
数据库查询中 is not null 和<>null是不等价的
没办法,翻了一下数据库的书,原来要用is (not) null

sqlite null sql
封面
打赏
相关推荐
  • 几道简单的 MySQL 面试题

    需求领导让我出几个 MySQL 的面试题,搞硬件运维的,会几个简单的就行,所以上网搜罗自己整理了一下。现有数据CREATE DATABASE IF NOT EXISTS TEST DEFAULT CHARSET UTF8MB4 COLLATE UTF8MB4_GENERAL...
    2020-04-23 125 0 0

发表评论

;-) :| :smile: :sad: :razz: :oops: :o :lol: :grin: :cry: :cool: :???:

评论列表(暂无评论)