[TOC] ## 表达式查询 >[info] 1. where('字段名','表达式','查询条件'); >2. whereOr('字段名','表达式','查询条件'); #### 后面全部以 where方法来举例 >[warning] 因表达式条件各不相同,有的结果是一个集合,我们只给出生成的SQL语句,不再给出运行结果,请上机测试!相信大家对运行结果都有预测能力 #### 1、相等 (' eq ' 或 ' = ') * 实例:查询think\_user表中,id等于3的记录,由于id为主键,所以只有一条返回记录 ~~~ //1、字符串:eq $result = Db::table('tp5_staff') -> where('id','eq',1010) -> select(); //2、操作符号:= $result = Db::table('tp5_staff') -> where('id','=',1010) -> select(); //3、默认为相等,所以中间操作符可省略 $result = Db::table('tp5_staff') -> where('id',1010) -> select(); //输出查询结果 dump($result); ~~~ * 以上三种方式,查询结果完全相同 * 对应SQL语句: ~~~ SELECT * FROM tp5_staff WHERE id = 1010 ; ~~~ * * * * * #### 2、不相等 ('neq' 或 ' <> ') * 实例:查询tp5_staff表中,id 不等 1020 的所有记录(除id=1020之外) ~~~ //1、字符串:neq $result = Db::table('tp5_staff') -> where('id','neq',1020) -> select(); //2、操作符号:<> $result = Db::table('tp5_staff') -> where('id','<>',1020) -> select(); //输出查询结果 dump($result); ~~~ * 对应SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` <> 1020 ; ~~~ * * * * * #### 3、大于 (' gt ', ' > ') * 实例:查询tp5_staff表中,id 大于1020的记录,返回一个数组 ~~~ //1、字符串:gt $result = Db::table('tp5_staff') -> where('id','gt',1020) -> select(); //2、操作符号:> $result = Db::table('tp5_staff') -> where('id','>',1020) -> select(); //输出查询结果 dump($result); ~~~ * 生成的SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` > 1020 ; ~~~ * * * * * #### 4、大于等于 (' egt ',' >= ') ~~~ //1、字符串:egt $result = Db::table('tp5_staff') -> where('id','egt',1020) -> select(); //2、操作符号:>= $result = Db::table('tp5_staff') -> where('id','>=',1020) -> select(); //输出查询结果 dump($result); ~~~ * 生成的SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` >= 1020 ; ~~~ * * * * * #### 5、小于 (' lt ',' < ') * 实例:查询tp5_staff表中,id 小于1020的记录,返回一个数组 ~~~ //1、字符串:lt $result = Db::table('tp5_staff') -> where('id','lt',1020) -> select(); //2、操作符号:< $result = Db::table('tp5_staff') -> where('id','<',1020) -> select(); //输出查询结果 dump($result); ~~~ * 生成的SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` < 1020 ; ~~~ * * * * * #### 6、小于等于 (' elt ',' <= ') ~~~ //1、字符串:elt $result = Db::table('tp5_staff') -> where('id','elt',1020) -> select(); //2、操作符号:<= $result = Db::table('tp5_staff') -> where('id','<=',1020) -> select(); //输出查询结果 dump($result); ~~~ * 生成的SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` <= 1020 ; ~~~ * * * * * #### 7、模糊查询 (' like ') * 实例:查询name字段包括”张”字符的记录 ~~~ //模糊查询:like $result = Db::table('tp5_staff') -> where('name','like','%张%') -> select(); //输出查询结果 dump($result); ~~~ * 生成的SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `name` LIKE '%合肥%' ; ~~~ * * * * * #### 8、区间查询 (between) * 语法:where(字段,’between’,’区间’); 区间字符串,第一个是最小值,第二个是最大值 * 例如:where(‘id’,’betweet’,’5,20’);表示id取值范围从5到20,很直观。 * 注:区间字符串,也可以用数组替代,推荐用数组,显示更专业,规范。 ~~~ where(‘id’,’between’,[5,20]); ~~~ * 实例:查询id在1010到1020之间的记录信息 ~~~ //区间用字符串表示 $result = Db::table('tp5_staff') -> where('id','between','1010,1020') -> select(); //区间用数组表示 $result = Db::table('tp5_staff') -> where('id','between',[1010,1020]) -> select(); //输出查询结果 dump($result); ~~~ * 生成的SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` BETWEEN 1010 AND 1020 ; ~~~ * * * * * #### 9、集合查询 (' in ' , ' not in ') * 说明:查询字段的值,必须在或者不在某一个集合内,集合是一个个离散的枚举字面量 * 例如:` where(‘id’,’in’,’9,11,21’);` 或者 `where(‘id’,’not in’,’9,10,20’);`同上,第三个字符串可用数组代替 * 实例:查询id 等于 1003,1005,1020 的数据,返回一个数组 ~~~ //集合用字符串表示 $result = Db::table('tp5_staff') -> where('id','in','1003,1005,1020') -> select(); // 取反,即不在某个集合内 not in $result = Db::table('tp5_staff') -> where('id','not in','1003,1005,1020') -> select(); //集合用数组表示 $result = Db::table('tp5_staff') -> where('id','in',[1003,1005,1020]) -> select(); // 取反,即不在某个集合内 not in $result = Db::table('tp5_staff') -> where('id','not in',[1003,1005,1020]) -> select(); ~~~ * 返回是三个元素的数组,即id=1003、id=1005和id = 1020的三条记录 * 生成SQL语句: ~~~ SELECT * FROM `tp5_staff` WHERE `id` IN (1003,1005,1020) ; ~~~ * * * * * #### 10、是否为空 (null, not null) * 如果判断某字段是否存在值,只需要二个参数,要注意 ~~~ //判断sex字段是否存在值 null $result = Db::table('tp5_staff') -> where('sex','null')-> select(); //条件取反:不为空 not null $result = Db::table('tp5_staff') -> where('sex','not null')-> select(); //如果要判断一个字段值是否为空,要三个参数,中间为'=' $result = Db::table('tp5_staff') -> where('sex','=','null')-> select(); //条件取反:不为空 not null $result = Db::table('tp5_staff') -> where('sex','=','not null')-> select(); ~~~ * 生成的SQL语句(仅以字段是否不为空举例) ~~~ SELECT * FROM `tp5_staff` WHERE `sex` IS NOT NULL ~~~ ### 总结: >[success] 本节课以理论为主,具体实例也很简单,请同学们亲自上机做一下,举一反三