使用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函数;

原文地址:https://www.cnblogs.com/jinxiang1224/p/8468256.html