<if test="zgsx !=null and zgsx != ''"> and aicii.xzzqsxmc= #{zgsx} </if>写成模糊查询
时间: 2024-03-22 19:40:27 浏览: 111
可以将该条件查询语句改写成模糊查询语句,如下所示:
```
<if test="zgsx !=null and zgsx != ''">
and aicii.xzzqsxmc like CONCAT('%',#{zgsx},'%')
</if>
```
其中,LIKE关键字表示模糊匹配,%表示匹配0个或多个字符,#{zgsx}表示将SQL参数zgsx的值填充到该位置。这样就可以进行模糊查询了。
相关问题
<select id="findOverdueButNotRectifiedList" resultType="com.tjdata.irmr.inspect.api.model.rsp.OverdueButNotRectifiedListRsp"> SELECT aicii.xzzqsxmc, aicii.jcx, aicii.bh, d.* FROM admin_inspection_check_item_info aicii LEFT JOIN ( SELECT airdi.zgjzrq, airdi.zgyq, aitmi.xzjcsmcccsxmc, aitmi.xzjcsmcccsxbm, '已逾期' as yqjg FROM admin_inspection_result_disposal_info airdi LEFT JOIN admin_inspection_task_basic_info aitbi ON airdi.jcdh = aitbi.jcdh LEFT JOIN admin_inspertion_task_main_info aitmi ON airdi.jcdh = aitmi.jcdh WHERE aitbi.qytyshxydm = #{sfbs} AND unix_timestamp( airdi.zgjzrq ) < unix_timestamp( NOW())) d ON aicii.xzzqsxbm = d.xzjcsmcccsxbm WHERE aicii.jcjg = '0' and aicii.xzzqsxbm = d.xzjcsmcccsxbm <if test="zgsx !=null and zgsx != ''"> and aicii.xzzqsxmc like concat(concat('%',#{zgsx}),'%') </if> limit #{current},#{size} </select>能做到zgsx的模糊查询吗
可以,这段 SQL 语句中已经包含了对 zgsx 的模糊查询,使用了 like 和 concat 函数实现。具体来说,如果 zgsx 不为空且不为'',则会在该 SQL 语句中添加一个条件:aicii.xzzqsxmc like concat(concat('%',#{zgsx}),'%'),即对 aicii 表中的 xzzqsxmc 列进行模糊匹配,匹配的字符串为 zgsx。
concat(concat('%',#{zgsx}),'%') 和 concat('%',#{zgsx},'%') 的却别
这两个函数的作用都是在字符串前后添加 % 符号,用于模糊查询。但是它们的区别在于:
- concat(concat('%',#{zgsx}),'%'):这个函数先在 #{zgsx} 前面添加一个 % 符号,然后再在整个字符串前后各添加一个 % 符号。例如,如果 #{zgsx} 的值为 abc,那么这个函数的返回值就是 %abc%。
- concat('%',#{zgsx},'%'):这个函数直接在 #{zgsx} 前后各添加一个 % 符号。例如,如果 #{zgsx} 的值为 abc,那么这个函数的返回值就是 %abc%。
因此,这两个函数的结果是一样的,只是实现方式略有不同。一般来说,推荐使用第二种方式实现,因为更加简洁明了。
阅读全文