使用concat函数完成like参数化查找

为了防止sql注入危险,在项目中使用了MySqlParameter参数化的方式进行数据库操作;

假设需要模糊匹配的是字段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,'%')

总结:

使用like语句进行参数化模糊查找时,需要使用concat函数;

posted @ 2017-07-04 23:09  小怪兽&奥特曼  阅读(668)  评论(0编辑  收藏  举报