1.模糊搜索
第一时间我马上想到了关键字 like
1.1.所要查询的字段中包含特定 字符,但不确定其位置,使用两个%包起来
select * from phone where provider like ‘%Apple%‘
可以匹配 ‘AppleXXX‘, ‘xxAppleXX‘, ‘ABCDefgApple‘
1.2.能够确定要查字段的结尾,则如下:
select * from Student where name like ‘%聪‘;
可以匹配到 ‘黄聪‘, ‘聪‘, ‘xxx聪‘ (必须是以聪结尾的)
1.3.确定开头的,
select * from Student where name like ‘黄%‘;
可以匹配到 ‘黄聪‘, ‘黄XXXXX‘ (必须是以黄开头的)
可以观察到,凡是使用关键字 like 就必须与 百分号% 结合使用,针对以上三种情况
一、 能够确定开头的:在确定部分后加百分号, like ‘Tom%‘
二、 能够确定结尾的,在确定部分前面加百分号, like ‘%Tom‘
三、 只知道包含,但不能确定具体位置的, like ‘%Tom%‘
特别注意:由于like的效率通常非常低,所以尽量少用,如果非得用,最好是符合第三种情况,也就是确定开头内容的,
因为这样是能够使用到索引的,而另外两种则无法使用索引,会扫描全表,所以特别慢。
2. 使用MySQL内置函数
请参考:MySQL使用内置函数来进行模糊搜索(locate()等)
3. 使用MySQL的全文索引
时间: 2024-10-26 03:18:02