历史版本17 :模糊查询 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

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

2. 思路编辑

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

3. 数据库使用方法编辑

3.1 "%":表示任意 0 个或多个字符

  oraclesqlserver  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,左右都可以有任意位字符 


222  222  222

3.2 "_":表示单个字符

  oraclesqlserver  mysql  
  支持  支持  支持

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

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

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

222  222  222


3.3 "[]":表示括号内所列字符中的一个

指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

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

1)sqlserver

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

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

222

2)Oracle
select * from 表名 where regexp_like(列名,'[张李王]三') 

222

3)MySQL

select * from 表名 where 列名 rlike '[张李王]三' 

select * from 表名 where 列名 regexp '[张李王]三'  

  oraclesqlserver  mysql  
  不支持  不支持  支持

222    222

3.4 "[^]":表示不再括号列中的单个字符

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

1)sqlserver

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

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

222

2)Oracle

select * from 表名 where regexp_like(列名,'[^李王]三')   
222

3)MySQL

select * from 表名 where 列名 rlike '[^李王]三'  

select * from 表名 where 列名 regexp '[^李王]三' 

222    222

3.5 特殊字符模糊查询

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

1)sqlserver

用[ ]将特殊字符包含:select * from 表名 where 列名 like '_[%]_'  

222

2)MySQL

用\将特殊字符转义:select * from 表名 where 列名 like '_\%_'    

222

3)Oracle

用 escape 关键字将特殊字符转义:select * from 表名 where 列名 like '_\%_'  escape '\'  

222

4. 示例编辑

1)新建模板,添加数据集 ds1:SELECT * FROM 销量 where 销售员 like '%${name}%'

222

2)将销售员和销量字段拖入单元格中,如下:
222


3)编辑参数面板,添加标签控件,控件值为模糊查询销售员:,添加文本控件,控件名为 name,与数据集中${}中的名称一致,添加查询按钮:

222

4)保存模板,点击分页预览,在文本框中输入模糊查询的字符串,点击查询按钮,即可查询出对应的销售数据:
222

5. 备注编辑

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

以上测试数据的数据库版本为:

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production

Microsoft SQL Azure (RTM) - 12.0.2000.8   Mar 27 2018 19:48:20   Copyright (C) 2018 Microsoft Corporation 

mysql 5.6.28-cdb2016-log