反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

下拉复选多值模糊查询

1. 概述

1.1 问题描述

某些场景下,我们希望使用下拉复选框选择多个值,按照每个值去模糊查询,如下图所示:

1600664649450717.gif

1.2 解决思路

通过 SQL 语句来处理,主要是运用 like 关键词或类 like 函数,不同的数据库处理方法不一样,下面分别介绍。

2. 不同数据库模糊查询

1)Oracle 数据库解决方案

主要使用 regexp_like() 函数来解决。新建数据查询(使用 Oracle 数据库内置的 emp 表),SQL语句如下:

select * from emp where regexp_like(ename,'${ename}')

注:查询语句中没有%号。

2)MySQL 数据库解决方案

MySQL 实现方式与 Oracle类似,不同的是要使用rlike关键字,SQL语句如下:

select * from emp where ename rlike '${ename}'

注:查询语句中没有%号。

或者使用 regexp 关键字,SQL语句如下:

select * from emp where ename regexp '${ename}'

注:查询语句中没有%号。

3)SQL Server 数据库及其他数据库解决方案

SQL Server 没有类似的关键字来解决,只能通过老办法拼接字符串,SQL语句如下:

select * from emp where ename like '%${ename}%'

注1:查询语句中有%号。

注2:此方案不仅适用 SQL Server,也适用其它数据库。

3. 示例

3.1 模板设计

3.1.1 数据准备

此处采用 FRDemo 数据库(SQLite数据库)进行演示。

新建数据查询ds1,SQL语句如下:SELECT * FROM 雇员 where 姓名 like '%${姓名}%',如下图所示:

1600672231234178.png

3.1.2 模板设计

新建普通报表,将数据集 ds1 字段拖入 A2~F2 单元格中,报表主体如下图所示:

1600672251539108.png

3.1.3 参数面板设计

编辑参数面板,依次添加标签控件、下拉复选框控件、查询按钮三个控件。如下图所示:

  • 添加标签控件,控件值为姓名:

  • 添加下拉复选框控件,控件名为姓名,跟数据查询 ds1 中${}中的名称一致。

  • 编辑数据字典,类型设置选择自定义,自定义实际值、显示值。

  • 下拉复选框返回值类型为字符串,分割符为%' or 姓名 like '%

注1:Oracle、MySQL数据库下拉复选框返回值类型采用“|”作为分隔符。

注2:SQL Server、SQLite数据库下拉复选框返回值类型采用「“%' or 姓名 like '%”」作为分隔符。

1600672272374268.png

3.2 效果预览

1)PC端

保存模板,点击分页预览,如下图所示:

1600664703825099.gif

2)移动端

1600070659732801.gif


3.3 注意事项

1)问题:保存模板,选择分页预览,勾选多个值查询时,如果出现以下提示:

1600672597114423.png

2)解决方案:系统开启了 SQL 防注入,可在考虑安全后取消 or 关键字注入,如下图所示:

1600067498351393.jpg

4. 模板下载

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\下拉复选模糊查询.cpt

点击下载模板:下拉复选模糊查询.cpt

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉