模糊查询

  • 文档创建者:加菲喵
  • 编辑次数:21次
  • 最近更新:Carly 于 2020-04-14
  • 1. 概述

    1.1 应用场景

    模糊查询,是一种很方便的查询方式,用来查询符合某种指定格式的数据。比如用户想查询所有包含 a 字符的数据,就可以使用模糊查询。

    1.2 实现思路

    模糊查询是利用 SQL 关键字加上通配符“_”“%”等组合进行查询的。

    2. 数据库使用方法

    本文将简单介绍部分数据库中模糊查询的使用方法。

    符号定义数据库语句
    "%"
    表示任意 0 个或多个字符。

    SQLServer

    Oracle

    MySQL

    Select * from 表名 where 列名 like '%' //查询出全部   

    Select * from 表名 where 列名 like 'x' //完全匹配查询  

    Select * from 表名 where 列名 like '%x' //右为x,前面可以有任意位字符  

    Select * from 表名 where 列名 like 'x%' //左为x,后面可以有任意位字符  

    Select * from 表名 where 列名 like '%x%' //中间为x,左右都可以有任意位字符

    "_"表示单个字符。

    SQLServer

    Oracle

    MySQL

    Select * from 表名 where 列名 like '_x' //右为x,前面有一位字符 

    Select * from 表名 where 列名 like '__x'  //右为x,前面有两位位字符  

    Select * from 表名 where 列名 like 'x__'  //左为x,后面有两位位字符

    "[]"

    表示括号内所列字符中的一个。

    指定一个字符,字符串或者范围,要求所匹配对象是他们中的任一个。

    注:如 [ ] 内有一系列字符( 01234、abcde 之类的)则可略写为“0-4”、“a-e”。

    SQLServer

    Select * from 表名 where 列名 like '[张李王]三' //将找出“张三”,“李三”,“王三”(而不是“张李王三”);  

    Select * from 表名 where 列名 like  '老[1-9]' //将找出“老1”,“老2”,……,“老9”;

    Oracleselect * from 表名 where regexp_like(列名,'[张李王]三') //将找出“张三”,“李三”,“王三”(而不是“张李王三”);
    MySQL

    select * from 表名 where 列名 rlike '[张李王]三' //将找出“张三”,“李三”,“王三”(而不是“张李王三”);

    select * from 表名 where 列名 regexp '[张李王]三'  //将找出“张三”,“李三”,“王三”(而不是“张李王三”);

    "[^]"

    表示不在括号列中的单个字符。

    其取值与 [] 相同,但它要求所匹配对象为指定字符以外的任一字符。

    SQLServer

    Select * from 表名 where 列名 like '[^张李王]三' //将找出不姓“张”,“李”,“王”的“赵三”,“孙三”等;

    Select * from 表名 where 列名 like '老[^1-4]';  //将排除“老1”到“老4”,寻找“老5”,“老6”、…… 

    Oracleselect * from 表名 where regexp_like(列名,'[^李王]三')  //将找出不姓“李”,“王”的“赵三”,“孙三”等;
    MySQL

    select * from 表名 where 列名 rlike '[^李王]三'   //将找出不姓“李”,“王”的“赵三”,“孙三”等;

    select * from 表名 where 列名 regexp '[^李王]三' //将找出不姓“李”,“王”的“赵三”,“孙三”等;

    特殊字符模糊查询当要查询的字符串包含通配符的时候,可以采用下面的方法来查询SQLServer

    [ ]将特殊字符包含:

    select * from 表名 where 列名 like '_[%]_'

    Oracle

    escape 关键字将特殊字符转义:

    select * from 表名 where 列名 like '_\%_'  escape '\'

    MySQL

    \将特殊字符转义:

    select * from 表名 where 列名 like '_\%_'

    注:Access 的模糊查询是'?','*' ,如 Select * from 表名 where 列名 like '*b*'

    3. 示例

    3.1 新建模板

    新建普通报表,存储为%FR_HOME%\webroot\WEB-INF\reportlets\doc\Primary\Parameter\模糊查询简单示例.cpt

    3.1.1 新建数据集

    新增数据集 ds1:SELECT * FROM 销量 where 销售员 like '%${name}%'

    如下图所示:

    1584069538662495.png

    3.1.2 设计报表

    将数据集字段拖入单元格中,报表样式如下图所示:

    1584069504536972.png

    3.2 设置参数面板

    编辑参数面板,添加三个控件。如下图所示:

    • 添加标签控件,控件值为模糊查询销售员:

    • 添加文本控件,控件名为name,与数据集中${}中的名称一致。

    • 添加查询按钮

    1584069877591732.png

    3.3 效果预览

    3.3.1 PC 端

    保存模板,点击分页预览,在文本框中输入模糊查询的字符串,点击查询按钮,即可查询出对应的销售数据,如下图所示:
    1584070023945785.png

    3.3.2 移动端

    App 及 HTML5 端效果预览,如下图所示:

    1584071026245824.png

    4. 已完成模板

    已完成模板请参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Primary\Parameter\模糊查询简单示例.cpt

    点击下载模板:模糊查询简单示例.cpt

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!