Posted on 2009-09-15 17:13
kongkongzi 阅读(459)
评论(0) 编辑 收藏 引用 所属分类:
mysql
MySQL中的字符串模式匹配
以“b”开头的: LIKE "b%"
以“fy”结尾的: LIKE "%fy"
包含一个“w”的: LIKE "%w%"
包含正好5个字符的: LIKE "_____"
% , 匹配任何数目的字符,甚至包括零字符
_ , 只能匹配一种字符
REGEXP和NOT REGEXP操作符(或RLIKE和NOTRLIKE,它们是同义词)
LOCATE,较like中文支持更好
方法一:
解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。
方法二:
如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。
方法三:
可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为:
SELECT * FROM table WHERE locate(field,'李') > 0;
方法四:
把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可
多个select的结果排序
mysql按匹配程度排序
根据匹配度来排序
查询上万个~~~
CREATE INDEX
SELECT playerName MATCH(playerName) AGAINST ('lan') FROM uw_new_map;
听说AGAINST不用 IN BOOLEAN MODE 会慢些, 是吗?
那如果用了IN BOOLEAN MODE 怎么进行排序呢? + - <> 这些逻辑搜索貌似都无法满足我排序的要求