SQL模糊查询详解
SELECT 字段 from 表 WHERE 某字段 Like 条件
其中关于查询的条件,SQL提供了四种匹配模式:
%、 _、 []、 [^]
1 % 表示任意0个或多个字符
有些情况下若是中文,请使用两个百分号(%%)表示
。
SELECT * from [user] WHERE u_name LIKE '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来
SELECT * from [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
2 _ 表示任意单个字符
SELECT * from [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3 [ ] 表示括号内所列字符中的一个(类似正则表达式)
SELECT * from [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”)
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,"%","[%]")
sqlencode=str
end
function
在查询前将待查字符串先经该函数处理即可。
6 总结
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
参考推荐:
原文: SQL模糊查询详解
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2011-06-08 22:04:25
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: SQL模糊查询详解 (米扑博客)