like
相信大家对like的用法肯定都很熟悉了,它可以匹配字段以某字符串开始,以某字符串结尾,包含有某字符串,用法如下:like ‘%string’,like ‘string%’,like ‘%string%’
find_in_set
现在我们遇到这样一个需求,字段里面的值是这样的,(1,2,3,4),(12,14),(3,5,11,12),(22,25,28,29),然后需要判断字段里面是否有2这个值,如果我们使用like的话,肯定是得不到正确的结果(如果不信,可以用like去验证一下)
这里我们来了解一下find_in_set,它是一个mysql字符串函数,用它就可以完美解决上面的问题,用法如下:find_in_set(2, 字段名称) = 0表示该字段不含有2,find_in_set(2, 字段名称) >= 1表示该字段含有2,举个例子:
SELECT find_in_set('2', '1,2,3,4,5') as test;
-> 2
SELECT find_in_set('2', '12,23,26,29') as test;
-> 0
select * from bt_insurance_type tb_t left join bt_policy_item tb_pi on (find_in_set(tb_t.it_id,tb_pi.it_name)>0) left join bt_policy tb_p on (tb_p.policy_id=tb_pi.policy_id)
locate
它也是一个mysql字符串函数,方法如下:locate(单个字符串, 字段名称),和find_in_set用法相似,那它俩有没有区别的呢,看如下例子:
执行sql语句:
SELECT find_in_set('13', '3,6,13,24,33,36') as test;
-> 3
SELECT locate('13', '3,6,13,24,33,36') as test;
-> 5
concat() 函数,是用来连接字符串。
精确查询:
select * from user where name='zhangsan'
模糊查询;
select * from user where name like '%zhang%'
在实际的使用中,条件是作为参数传递进来的。 所以我们使用 concat() 函数
select * from user where name like concat('%', #{name},'%')
concat(str1,str2,str3,str4,……….);
连接字符串函数,会生成一个字符串
文档更新时间: 2022-12-26 07:47 作者:admin