参数模板输入多值的模糊查询

 

报表条件查询中经常会涉及到模糊查询和多值查询的情况。模糊查询可根据用户输入在参数框中输入的关键字进行模糊匹配,sql 实现是通过 like 条件完成的;那我们应该如何实现输入多个值的时候的模糊查询呢?
解决办法:
利用动态参数完成 sql 查询条件的拼接,根据用户输入的多个数据以“,”分割的多个查询关键字,拼接成多个 or 相连的 like 条件。
我们以自带的 demo 为列子,新建数据集如下:

imagepng
报表新增俩个参数 arg1(普通参数),arg2(动态参数)。

imagepng
arg2 表达式:if(arg1==null or arg1==““,” and 1=1”,"and 城市 like ‘%“+replace(@arg1,”,“,”%’ or 城市 like ‘%“)+”%’")
这样我们就实现了:
没有输入查询条件时,默认查出所有商品数据,查询条件为“ and 1=1。”
输入查询条件“大,营”,查出城市中包含大,营的数据,查询条件为“ and 城市 like ‘% 大 %’ or 城市 like ‘% 营 %’。”