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

目录:

1. 问题描述编辑

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

2. 模糊查询语法编辑

模糊查询是利用“_”表示单个字符和“%”表示任意个字符进行匹配的。一些常见的格式如下:

% :表示任意0个或多个字符。
可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
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,后面有两位位字符
Select * from 表名 where 列名 like '%x'; //右为x,前面可以有任意位字符
Select * from 表名 where 列名 like 'x%'; //左为x,后面可以有任意位字符
Select * from 表名 where 列名 like '%x%'; //中间为x,左右都可以有任意位字符

[ ] :表示括号内所列字符中的一个
指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

SELECT * FROM [user] WHERE u_name LIKE '[张李王]三' //将找出“张三”、“李三”、“王三”(而不是“张李王三”);如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'  //将找出“老1”、“老2”、……、“老9”;
[^ ] :表示不在括号所列之内的单个字符
其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'  //将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';  //将排除“老1”到“老4”,寻找“老5”、“老6”、……

查询内容包含通配符时
由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。

结合参数的模糊查询(用${name}):
Select * from 表名 where 列名 like '${name}';
Select * from 表名 where 列名 like '%${name}';
以此类推。 

备注:ACCESS的模糊查询比较特殊是'?','*'  可要注意了! 如  Select * from a where name like '*b*'

3. 示例编辑

使用模糊查询实现参数为空选出全部
新建工作簿,增加数据集ds1,sql语句为:SELECT*FROM 销量 WHERE 地区 like '%${area}'
效果查看
点击数据集面板中的预览按钮,会弹出参数对话框,如果输入“华东”,只会显示出华东地区产品销量情况:
222
如果不输入参数值,则会显示出所有地区的产品销量情况:
222