• thinkPHP5.0数据查询表达式生成技巧


    thinkPHP的查询表达式大揭秘

    主要使用where(条件表达式)方法

    语法一:where('字段','条件','值');

    等于:EQ 解析为"="

    不等于:NEQ 解析为"<>"

    小于:LT 解析为"<"

    小于等于: ELT 解析为"<="

    大于:GT 解析为">"

    大于等于:EGT 解析为">="

    区间:BETWEEN 解析为 “BETWEEN * AND *”

    不在区间:NOTBETWEEN 解析为 “NOTBETWEEN * AND *”

    集合:IN 解析为 IN(*,*);

    不在集合 : NOT IN 解析为 NOT IN(*,*)

    字段值为NULL 和 NOT NULL  

    //条件省略,默认为相等

    $res=Db::table('data')->where('id',11) //等价于:where('id','=',11)

               ->fetchSql(true) //输出SQL语句,

               ->select();

    //完整的单值条件表达式

    $res=Db::table('data')->where('id','EGT',11)  //等价于: where('id','>=',11)

              ->fetchSql(true)

              ->select();

    //区间条件表达式

    $res=Db::table('data')->where('age','BETWEEN',[18,35]) //between 18 and 35

              ->where('age','NOT BETWEEN',[18,35]) //not between 18 and 35

              ->fetchSql(true)

              ->select();

    //集合条件表达式

    $res=Db::table('data')->where('id','IN',[2,3,4])  //in(2,3,4)

              ->where('id','NOT IN',[2,3,5]) //not in(2,3,5)

              ->fetchSql(true)

              ->select();

    //null值判断,注意中间有“=”号的区别

    $res=Db::table('Data')->where('node_name','NULL')  //找出该字段默认设置为NULL的数据

              ->where('node_name','=','NULL')  //找出改字段等于NULL字符串的数据

              ->fetchSql(true) //打印SQL

              ->select();

    //like 或者 not like

    $res=Db::table('Data')->where('name','LIKE','%php')  //模糊匹配以php结尾的字段

                ->where('name','NOT LIKE','%php')

              ->where('node_name','=','NULL') //node_name的值为NULL

              ->fetchSql(true)

              ->select();

    每个数组元素都是一个查询条件,使用where()方法时,每个条件之间为AND关系,使用whereOr()方法为or

    //AND

    $res=Db::table('Data')->where([
    'id'=>['>',11],
    'typeid'=>['BETWEEN',[13,20]]
    ])
    ->fetchSql(true)
    ->select();
    //SQL :select * from `Data` where `id` >11 AND `typeid`  BETWEEN 18 AND 20;
     
    //OR
    $res=Db::table('Data')->whereOr([
      'id'=>['EGT',11],
      'age'=>['BETWEEN',[17,20]]
    ])
    ->fetchSql(true)
    ->select();
    //SQL:select * from `Data` where `id` >=11 OR `age` BETWEEN 17 AND 20
     
    //简单条件
    $res=Db::table('Data')->where('id','EXP','>=10')
              ->select();
    SQL : select * from `Data` where (`id`>=10)
    //复合条件
    $res=Db::table('Data')->where('age','EXP','BETWEEN 20 AND 30')
              ->where();
    SQL: select * from `Data` where (`age` BETWEEN 20 AND 30);
     
    $res=Db::table('Data')->where('id','EXP','>=10')
              ->where('age','>',30)
              ->whereOr('dept','市场部')
              ->select();
    select * from `Data` where(`id`>=10) AND `age`>30 OR `dept`='市场部';
  • 相关阅读:
    数据库各类模板
    React+Cesium安装部署
    VS2019+QT 制作自定义控件
    Vue+arcgis(1)
    将TIF/PNG等转为GeoTIFF
    QT 同名信号无法识别的问题
    VSCode配置PyQt5
    Python中类属性和self属性的区别
    postgresql的数据复制
    在windows server 2012 R2上搭建nginx环境
  • 原文地址:https://www.cnblogs.com/ymdphp/p/10951469.html
Copyright © 2020-2023  润新知