我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > 服务器综合讨论星空(中国) > mysql模糊查询的方法
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

mysql模糊查询的方法

23浏览 / 0回复

99gshl

99gshl

0
精华
22
帖子

等  级:Lv.1
经  验:0
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:广东
  • 注  册:2014-01-17
  • 登  录:2014-04-28
发表于 2014-02-19 17:48:10
电梯直达 确定
楼主

在进行数据库查询时,有完整查询和模糊查询之分。 


 SELECT 字段 FROM 表 WHERE 某字段 Like 条件  其中关于条件,SQL提供了5种匹配模式:  


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,"%","[%]")  sqlencode=str  end function  在查询前将待查字符串先经该函数处理即可。



本文地址转自广深互联:http://www.99idc.cn/style/info/shownews.asp?id=797


喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^


高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表