like concat("%"+#{personInCharge}+"%")
时间: 2023-07-31 10:06:08 浏览: 128
在MyBatis中,如果你想要在LIKE语句中使用动态参数,可以使用concat函数将通配符和参数值拼接起来。以下是示例代码:
```xml
SELECT * FROM table_name WHERE column_name LIKE CONCAT('%', #{personInCharge}, '%');
```
在这个例子中,假设`personInCharge`是一个动态参数,使用`#{personInCharge}`来表示。使用concat函数将`%`和参数值拼接在一起,从而实现LIKE语句中的通配符匹配。
请确保在执行SQL查询之前对输入参数进行适当的验证和转义处理,以防止SQL注入攻击的风险。
相关问题
帮我看看下面sql哪里出错了 select * from xwjcy_jgbal where if(xwjcy_jgbal.ajzt != null and xwjcy_jgbal.ajzt != " " ,ajzt like concat ('#',xwjcy_jgbal.ajzt, '%') , 1=1) AND where if(xwjcy_jgbal.ajlb != null and xwjcy_jgbal.ajlb != " " ,ajlb like concat ('#',xwjcy_jgbal.ajlb , '%') , 1=1) AND where if(xwjcy_jgbal.xm != null and xwjcy_jgbal.xm != " " ,xm like concat ('#',xwjcy_jgbal.xm , '%') , 1=1) ORDER BY slsj
这个 SQL 语句有几个错误:
1. 在 WHERE 子句中,不能使用多个 "WHERE" 关键字,应该用 "AND" 或 "OR" 连接条件。
2. 在 IF 函数中,应该使用 AND 连接多个条件,而不是使用逗号。
3. 在 IF 函数中,应该使用 LIKE 运算符而不是等号来比较字符串。
4. 在 CONCAT 函数中,应该使用空字符串 '',而不是 '#',来连接字符串。
下面是修改后的 SQL 语句:
```
SELECT *
FROM xwjcy_jgbal
WHERE
(xwjcy_jgbal.ajzt IS NOT NULL AND xwjcy_jgbal.ajzt <> '' AND ajzt LIKE CONCAT('%', xwjcy_jgbal.ajzt, '%'))
AND
(xwjcy_jgbal.ajlb IS NOT NULL AND xwjcy_jgbal.ajlb <> '' AND ajlb LIKE CONCAT('%', xwjcy_jgbal.ajlb, '%'))
AND
(xwjcy_jgbal.xm IS NOT NULL AND xwjcy_jgbal.xm <> '' AND xm LIKE CONCAT('%', xwjcy_jgbal.xm, '%'))
ORDER BY slsj;
```
这个 SQL 语句会查询 xwjcy_jgbal 表中符合条件的记录,并按照 slsj 排序。
sql <if test="keyword != null"> and t1.username like '+#{keyword}+' </if>语法正确麻
语法不正确,因为在 MyBatis 中,`#{}` 是用来表示参数占位符的,应该被用在 SQL 语句中而不是字符串中。正确的语法应该是:
```sql
<if test="keyword != null">
AND t1.username LIKE CONCAT('%', #{keyword}, '%')
</if>
```
这里使用了 `CONCAT` 函数将 `%` 与 `#{keyword}` 拼接成一个字符串,以进行模糊匹配。
阅读全文