to myself 的分类学习日志

做自己想做的事
posts - 232, comments - 6, trackbacks - 0, articles - 0

MySQL中的字符串模式匹配

Posted on 2009-09-15 17:13 kongkongzi 阅读(463) 评论(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 怎么进行排序呢? + - <> 这些逻辑搜索貌似都无法满足我排序的要求