当前位置:  开发笔记 > 后端 > 正文

使用LIKE或MATCH的SQL查询

如何解决《使用LIKE或MATCH的SQL查询》经验,为你挑选了1个好方法。

我有一个包含13列的表,其中有5列包含让我们说的字符串数据或VARCHAR数据.

现在我有一个字符串让我们说"abc".

我想编写一个sql查询来获取在这5列中包含此"abc"字符串的所有行."abc"可以是列数据的一部分列的数据.

我用过LIKE功能

SELECT * FROM table WHERE col1 OR col2 OR col3 OR col4 OR col5 LIKE '%abc%';

但它没有起作用n回到了所有的行.

MATCH也不知道如何使用函数,我在sql中表现不错.任何人都可以帮忙.



1> Lukasz Szozd..:

您可以多次指定条件:

SELECT * 
FROM table 
WHERE col1 LIKE '%abc%'
 OR col2 LIKE '%abc%'
 OR col3 LIKE '%abc%'
 OR col4 LIKE '%abc%' 
 OR col5 LIKE '%abc%';

这将非常慢,因为您有多个OR非SARGable条件.

或者:

SELECT * 
FROM table 
WHERE CONCAT_WS('^', col1,col2,col3,col4,col5) LIKE '%abc%';


使用MATCH(利用全文索引的首选解决方案):

SELECT * 
FROM table 
WHERE MATCH(col1, col2,col3,col4, col5) AGAINST ('abc');

SqlFiddleDemo

请记住,要使用MATCH您需要首先创建索引:

ALTER TABLE tab ADD FULLTEXT ft_index_name (col1,col2,col3,col4,col5);

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有