下面介绍 mysql 中模糊查询的四种用法:
1,%: 表示任意 0 个或多个字符. 可匹配任意类型和长度的字符, 有些情况下若是中文, 请使用两个百分号 (%%) 表示.
比如 SELECT FROM [user] WHERE u_name LIKE '% 三 %'
将会把 u_name 为 "张三","张猫三","三脚猫","唐三藏" 等等有 "三" 的记录全找出来.
另外, 如果需要找出 u_name 中既有 "三" 又有 "猫" 的记录, 请使用 and 条件
SELECT FROM [user] WHERE u_name LIKE '% 三 %' AND u_name LIKE '% 猫 %'
若使用 SELECT * FROM [user] WHERE u_name LIKE '% 三 % 猫 %'
虽然能搜索出 "三脚猫", 但不能搜索出符合条件的 "张猫三".
2,_: 表示任意单个字符. 匹配单个任意字符, 它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE '三'
只找出 "唐三藏" 这样 u_name 为三个字且中间一个字是 "三" 的;
再比如 SELECT * FROM [user] WHERE u_name LIKE '三__'; 只找出 "三脚猫" 这样 name 为三个字且第一个字是 "三" 的;
3,[ ]: 表示括号内所列字符中的一个(类似正则表达式). 指定一个字符, 字符串或范围, 要求所匹配对象为它们中的任一个.
比如 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";
4,[^ ] : 表示不在括号所列之内的单个字符. 其取值和 [] 相同, 但它要求所匹配对象为指定字符以外的任一个字符.
比如 SELECT FROM [user] WHERE u_name LIKE '[^ 张李王]三' 将找出不姓 "张","李","王" 的 "赵三","孙三" 等;
SELECT FROM [user] WHERE u_name LIKE '老[^1-4]'; 将排除 "老 1" 到 "老 4", 寻找 "老 5","老 6",......
5, 查询内容包含通配符时
由于通配符的缘故, 导致我们查询特殊字符 "%","","["的语句无法正常实现, 而把特殊字符用"[ ]" 括起便可正常查询. 据此我们写出以下函数:
function sqlencode(str) str=replace(str,"';","';';")
str=replace(str,"[","[[]") '; 此句一定要在最先 str=replace(str,"","[_]") str=replace(str,"%","[%]") sqlencode=str end function
来源: http://www.qdfuns.com/article/17898/9299a34e074538b5de288ab355f87ef2.html