mysql 实现模糊查询

一、模糊查询还有其他的实现方式:

1.select * from news where title like ‘_’ +@title+’_’

如果@title的值是:三,那么搜索结果是“唐三藏”这样的三个字,且中间的字是“三”的。

解释:”_” 表示任意单个字符,匹配单个任意字符,它常用来限制表达式的字符长度语句。

2.select * from news where title like ‘老[@title]’

如果@title的值是:1-9,表示一个范围,那么搜索结果为:“老1、老2…老9”

解释:[ ] 表示括号内所列字符中的一个(类似正则表达式),指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

3.select * from news where title like ‘[^@title]三’

如果@title的值为:张李王,表示一个字符串,那么搜索结果为:排除“张三、李三、王三”的值,找出“赵三、孙三”等值。

解释:[^] 表示不再括号所列之内的单个字符。其取值和[ ]相同,但它要求所匹配对象为指定字符以外得的任一个字符。

二、SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下:
1、LIKE’Mc%’ 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
2、LIKE’%inger’ 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
3、LIKE’%en%’ 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
4、LIKE’_heryl’ 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
5、LIKE'[CK]ars[eo]n’ 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
6、LIKE'[M-Z]inger’ 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。
7、LIKE’M[^c]%’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

发表评论