1. 概述编辑
1.1 问题描述
某些场景下,我们希望使用下拉复选框选择多个值,按照每个值去模糊查询,如下图所示:
1.2 解决思路
通过 SQL 语句来处理,主要是运用 like 关键词或类 like 函数,不同的数据库处理方法不一样,下面分别介绍。
2. 示例编辑
2.1 模板设计
2.1.1 数据准备
1)Oracle 数据库解决方案主要使用 regexp_like()函数来解决。新建数据查询(使用 Oracle 数据库内置的 emp 表),SQL语句如下:
select * from emp where regexp_like(ename,'${name}')
注:查询语句中没有%号。
2)MySQL 数据库解决方案MySQL 实现方式与 Oracle类似,不同的是要使用rlike关键字,SQL语句如下:select * from emp where ename rlike '${name}'
注:查询语句中没有%号。
或者使用 regexp 关键字,SQL语句如下:
select * from emp where ename regexp '${name}'
注:查询语句中没有%号。
3)SQL Server 数据库及其他数据库解决方案SQL Server 没有类似的关键字来解决,只能通过老办法拼接字符串,SQL语句如下:select * from emp where ename like '%${name}%'
注1:查询语句中有%号。
注2:此方案不仅适用 SQL Server,也适用其它数据库。
此处采用 FRDemo 数据库进行演示。SQL语句如下:SELECT * FROM 雇员 where 姓名 like '%${姓名}%',如下图所示:
2.1.2 模板设计
新建普通报表,将数据集 ds1 字段拖入 A2~F2 单元格中,报表主体如下图所示:
2.1.3 参数面板设计
1)编辑参数面板,依次添加标签控件、下拉复选框控件、查询按钮三个控件。如下图所示:
添加标签控件,控件值为模糊查询销售员:
添加下拉复选框控件,控件名为姓名,跟数据查询 ds1 中${}中的名称一致。
2)设置数据字典
3)设置控件返回值类型为字符串,分隔符为 | 符号,如下图所示:
注:Oracle、MySQL数据库采用“|”作为分隔符。
4)下拉复选框返回值类型为字符串,分割符为%' or 姓名 like '%,如下图所示:
注:SQL Server、SQLite数据库采用“%' or 姓名 like '%”作为分隔符。
2.2. 效果预览
1)PC端
保存模板,点击分页预览,如下图所示:
2)移动端
3. 注意事项
如果出现以下提示:
则是系统开启了 SQL 防注入,可在考虑安全后取消 or 关键字注入,如下:
4. 模板下载编辑
点击下载模板: