反饋已提交

網絡繁忙

下拉複選框多值模糊查詢

1. 概述

1.1 問題描述

某些場景下,我們希望使用下拉複選框選擇多個值,按照每個值去模糊查詢,如下圖所示:

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 資料準備

此處採用 FRDemoTW 資料庫( SQLite 資料庫)進行示範。

建立資料查詢ds1,SQL語句如下:SELECT * FROM 僱員 where 姓名 like '%${姓名}%',如下圖所示:

3.1.2 設計報表

建立普通報表,將資料集 ds1 欄位拖入 A2~F2 儲存格中,報表主體設計樣式,如下圖所示:

3.1.3 設計參數面板

1)編輯參數面板,選擇「全部新增」,將參數元件選擇下拉複選框元件標籤元件元件值為姓名:,如下圖所示:

2)下拉複選框元件元件名為姓名,與資料查詢 ds1 中${}中的名稱一致。編輯資料字典,類型設定選擇自訂,自訂實際值、顯示值。

回傳值類型為字串,分割符為%' or 姓名 like '%。如下圖所示:

注:這裏分隔符的使用和資料庫類型有關,具體看資料庫支援的 SQL 語句和定義資料集參數的方式。如Oracle、MySQL資料庫回傳值類型可以採用  | 作為分隔符,SQL Server、SQLite資料庫回傳值類型採用 %' or 姓名 like '% 作為分隔符。

3.2 效果預覽

1)PC 端

儲存範本,點選「分頁預覽,如下圖所示:

2)行動端

App 與 HTML5 端效果,如下圖所示:

3.3 注意事項

問題描述

儲存範本,選擇分頁預覽,勾選多個值查詢時,如果出現以下提示:

解決方案

系統開啟了 SQL 防注入,可在考慮安全後取消 or 關鍵字注入,如下圖所示:

4. 範本下載

已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Parameter\MultiValue\下拉複選模糊查詢.cpt

點選下載範本:下拉複選模糊查詢.cpt


附件列表


主題: 參數應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

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

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

不再提示

10s後關閉