like模糊查询时为什么使用concat函数

本文详细解析了在SQL查询中使用参数化方式进行模糊搜索的正确方法,避免了因直接拼接字符串导致的语法错误。通过concat函数的运用,确保了查询语句的正确性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用like语句进行参数化模糊查找时,需要使用concat函数。(在实际的使用中,条件是作为参数传递进来的。 所以我们使用 concat() 函数)。

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

实例:

数据库中:

 

实体类:

Mapper.xml文件的配置以及sql语句:

类似value的,实际项目中后面的是以参数传进来的:

而不是具体的条件:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值