sql函数和用法

175 阅读1分钟

1、FIND_IN_SET :案例 防止你模糊查询,查3,把含有"13,"含有 "23,"的一起查出来

FIND_IN_SET(str,strlist);

其中str为要查询的目标字符串, strlist为字段名称

实例查询,准备数据如下

CREATE TABLE `tb_test` (
  `id` int(8) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `list` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);
INSERT INTO `tb_test` VALUES (1, 'name', 'mike,allen,jack,jay');
INSERT INTO `tb_test` VALUES (2, 'name2', 'jay,pojo,jay');
INSERT INTO `tb_test` VALUES (3, 'name3', 'allen,mike,yago');

使用FIND_IN_SET进行查询含有jay的list

SELECT id,name,list from tb_test WHERE FIND_IN_SET('jay',list);

实际案例: 防止你模糊查询,查3,把含有"13,"含有 "23,"的一起查出来

FIND_IN_SET('".$v['dorm_id']."',dorm_ids)"

在这里插入图片描述
防止你模糊查询,查3,把含有"13,"含有 "23,"的一起查出来

 $user=Db::name('user') ->where("FIND_IN_SET('".3."',dorm_ids)" )   ->find()   ;

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

CEIL() 函数传回大于等于给定数值表达式的最小整数

AVG() 函数返回数值列的平均值。

实例:

     $data['evaluate_data'] = (new Evaluate)->where(['product_id' => $productId])
              ->field('COUNT(*) as count, IFNULL(CEIL(AVG(rate)/5*100),0) as avg')
          	  ->cache(10)->find();

COUNT() - 返回行数

FIRST() - 返回第一个记录的值

LAST() - 返回最后一个记录的值

MAX() - 返回最大值

MIN() - 返回最小值

SUM() - 返回总和