1. 概述编辑
1.1 问题描述
使用下拉复选框选择多个值后,如何实现按照每个值去模糊查询,如下图所示:
1.2 解决思路
通过 SQL 来处理,不同的数据库处理方法不一样,下面分别介绍。
3. 解决步骤编辑
3.1 Oracle 数据库解决方案
主要使用 regexp_like()函数来解决。
1)新建数据查询(使用 Oracle 数据库内置的 emp 表)
select * from emp where regexp_like(ename,'${name}')
注:查询语句中没有%号。
2)报表设计如下:
3)设置控件添加数据字典
4)设置控件返回值类型为字符串,分隔符为 | 符号。
5)保存预览即可。
3.2 MySQL 数据库解决方案
MySQL 实现方式与 Oracle类似,不同的是要使用rlike关键字,如:
select * from emp where ename rlike '${name}'
注:查询语句中没有%号。
或者使用 regexp 关键字,如:
select * from emp where ename regexp '${name}'
注:查询语句中没有%号。
其他步骤与 Oracle 方案一样。
3.3 SQL Server 数据库解决方案
SQL Server 没有类似的关键字来解决,只能通过老办法拼接字符串。
数据查询如下,
select * from emp where ename like '%${name}%'
注:查询语句中有%号。
下拉复选框返回值类型为字符串,分割符为%' or ename like '%
其他步骤与 Oracle 方案一致。
此方案不仅适用 SQL Server,也适用其它数据库。
3.4 注意事项
如果出现以下提示:
则是系统开启了 SQL 防注入,可在考虑安全后取消 or 关键字注入,如下:
4. 预览效果编辑
4.1 PC 端预览效果
保存模板,点击预览,实现效果如描述中所示。
4.2 移动端预览效果
1)App 效果
2)H5 效果
5. 已完成模板编辑
已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\下拉复选模糊查询.cpt。