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