like concat()
concat()是用来连接字符串的,对于mysql的 like 而言,一般都要用 like concat() 组合,可以防止 sql 注入。
like concat('%/',#{datePath,jdbcType=VARCHAR},'/%')
第一个参数 ,就是’%’,其中%后边可以加上一些常量字符比如 / 。
第二参数,基本上就是传递过来的参数 。
第三个参数,是结尾的 ‘%’, %前边可以加一定的常量字符比如 / 。
假设需要模糊匹配的是字段name,其sql语句如下
select * from Table where 1=1 name like '%?name%'
通过执行语句,数据库却提示语法错误,而错误原因是因为参数化的时候?name最终会被字符串替代;假设?name参数化时,其值为’jin’;上述语句等价如下:
select * from Table where 1=1 name like '%'jin'%'
很明显 ‘%’jin’%’ 是非法的;
正确语法如下:
select * from Table where 1=1 name like concat('%',?name,'%')
实际项目中后面的参数是以参数传进来的
select * from user where name like concat("%",#{name},"%")
例子:
精确查询:
select * from user where name="zhangsan"
模糊查询;
select * from user where name like "%zhang%"
在实际的使用中,条件是作为参数传递进来的。 所以我们使用 concat() 函数
mybatis:
select * from user where name like concat("%", #{name},"%")
concat(str1,str2,str3,str4,…); 连接字符串函数,会生成一个字符串
评论前必须登录!
注册