Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?
2016-01-12 14:17
796 查看
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');
先上两种实现方式的实例:
$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');
相关文章推荐
- PHP代码优化的40条建议
- php文件上传后台存储中文乱码问题解决方案
- RTP协议全解(H264码流和PS流)
- phan—php语法静态检查在windows下的配置
- 新 好用的 YII数据库操作常用语句
- PHP运行模式
- PHP5中PDO的简单使用
- Matplotlib绘图库初探
- 阿里云云服务器ECS Windows Server 2012 R2 64位标准版PHP环境搭建
- 细说php完美分页类
- 细说php完美分页类
- 2.php简单工厂模式
- 服务器时间没同步.---ntpdate
- 解决Gradle报错找不到org.gradle.api.internal.project.ProjectInternal.getPluginManager()方法问题
- ContentProvider基础(二)读取联系人信息
- PHP中的安全函数
- PHP之HTML标签
- Laravel5多应用修改
- 【PHP】PHP 7.0.2 发布
- 数据分页 THINKPHP3.2 分页 三种分页方法