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();