我有以下查询:
SELECT * FROM `user`
WHERE MATCH (user_login) AGAINST ('supriya*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
其中输出以'supriya'.开头的所有记录.
现在我想要一些能够找到以例如结尾的所有记录的东西'abc'.
我知道*不能预先添加它也不起作用我已经搜索了很多但是找不到任何关于这一点.
如果我给查询字符串priya..it应该返回所有以priya.结尾的记录.
我该怎么做呢?
Gol*_*rol 11
匹配不适用于启动通配符,因此匹配*abc*将无效.你将不得不LIKE用来实现这个目标:
SELECT * FROM user WHERE user_login LIKE '%abc';
Run Code Online (Sandbox Code Playgroud)
然而,这将非常缓慢.
如果你真的需要匹配字符串的结尾,并且你必须经常这样做,而性能正在杀死你,一个解决方案是创建一个单独的列,你可以在其中反转字符串,所以你得到:
user_login user_login_rev
xyzabc cbazyx
Run Code Online (Sandbox Code Playgroud)
然后,如果列被索引'%abc',您可以查找'cba%'哪个更快,而不是查找.如果你想搜索,你可以再次使用MATCH 'cba*'.您也必须反转搜索字符串.