zoukankan      html  css  js  c++  java
  • Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?

    Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?
    先上两种实现方式的实例:
    $querys["house_type_image"] = array('NEQ','NULL'); //判断字段不为空
    //$querys["house_type_image"] = array('exp','is not null');//其中的exp表示MYSQL的表达式查询,支持各种MYSQL语句的添加
    -------------------------

    Thinkphp中查询复杂的情况需要使用查询表达式,使用格式:
    $map['字段名'] = array('表达式','查询条件');
    表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
    表达式 含义
    EQ 等于(=)
    NEQ 不等于(<>)
    GT 大于(>)
    EGT 大于等于(>=)
    LT 小于(<)
    ELT 小于等于(<=)
    LIKE 模糊查询
    [NOT] BETWEEN (不在)区间查询
    [NOT] IN (不在)IN 查询
    EXP 表达式查询,支持SQL语法
    示例见Thinkphp的官方文档。官方文档中没有查询某字段为空的例子,试了试,方法如下
    判定不为空:
    $cond['pic']=array('NEQ','NULL'); //字段pic不为空
    $list=$mod->where($cond)->order('id desc')->select();
    判定为空:
    $cond['pic']=array('EQ','NULL'); //字段pic为空
    官方的文档中没有对应例子。

    Thinkphp中如何表达MYSQL中的某字段不为空is not null?
    Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,很多东西需要被尝试后才能知道,MYSQL查询语句中有个表达式is not null ,在thinkphp中就不能用“=” 或者简单的eq等来表示。
    有一种变相的处理方法就是直接把where中的array参数换成string,即比如我要查询某表的pic不为空
    $data = D('tablename');
    $data->where(“pic is not null”)->select();
    而有时候我已经写了一堆的array参数,实在不愿意为了一个字段改变整体格式,
    经过多次测试发现了TP还是支持MYSQL不为空的array编写方式的,即:
    $map['pic'] = array('exp','is not null');
    其中的exp表示MYSQL的表达式查询,支持各种MYSQL语句的添加。
    该写法同时支持在update中对字段进行自动增值:
    SQL语句 update table set data=data+1;
    用THINKPHP可以表达为
    $data['data'] = array('exp','data+1');
    $table->where(1)->save($data);

    //$querys["house_type_image"] = array('exp','is not null');

  • 相关阅读:
    centos7下磁盘空间调整
    centos7下 查看CPU、内存、磁盘的使用情况
    centos7中Spark集群的安装与配置(Hadoop2.6.5+spark2.3.3)
    linux下mysql ---- Host '' is not allowed to connect to this MySQL server
    11-1、多线程
    10-2、对象的序列化和反序列化
    9-1、注解
    8-1、泛型
    7-1、集合
    6-1、异常处理
  • 原文地址:https://www.cnblogs.com/zdz8207/p/thinkphp-sql-exp.html
Copyright © 2011-2022 走看看