LIKE 和 ILIKE 操作符可以模糊匹配字符串,LIKE是一般用法,ILIKE匹配时则不区分字符串的大小写,~ 波浪号则可以使用正则匹配。

它们需要结合通配符使用,下面介绍两种常用的通配符。
%:百分号用于匹配字符串序列,可匹配任意组合;
_:下划线用于匹配任何单一字符。
则可以使用正则模式来匹配字符串,除此之外它匹配模式还有一个特殊的地方
select * from table where ~ 'ab'; --> 如果是这样的形式就代表着他可以匹配任何包含ab的字符串其实就相当于省略的两边的 .*
如果想要做前缀匹配或后缀匹配,可以用下面的方法
mysql的LIKE操作符可以用于模糊匹配数据行中的某些文本或字符。然而,当使用LIKE语句时,如果搜索字符串的开头是通配符(如%),MySQL就无法使用索引来加速查询,因为它需要扫描整个表来查找匹配项。
这种情况下,MySQL优化器会选择进行全表扫描,因为它无法确定哪些索引列是需要使用的,因此会忽略所有的索引,从而导致索引失效。
例如,假设有一个包含“name”和“age”两列的表,其中“name”列采用了索引,现在需要查询名字开头为“Tom”的记录,SQL语句可能如下:
由于LIKE语句中的“%”通配符出现在搜索字符串的开头,MySQL无法使用索引来加速查询,只能对整个表进行扫描,查询效率会大大降低。
为了避免这种情况,可以尝试将LIKE语句中的通配符放在搜索字符串的末尾,这样MySQL可以利用索引来快速定位匹配项,例如:
总之,当使用LIKE语句时要注意通配符的位置,如果出现在搜索字符串的开头,可能会导致MySQL无法使用索引来加速查询,从而导致索引失效。
索引的顺序要遵循三个规则
1.要遵循最左前缀 无论是多个还是一个列的索引 都不应该跳过最左列 如果在查询语句当中 没有使用最左前缀的字段 就不会使用索引
3.索引进行模糊查询 范围查询 ,右边的所有列都无法使用索引优化