Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中与或一起使用like语句_Mysql - Fatal编程技术网

在mysql中与或一起使用like语句

在mysql中与或一起使用like语句,mysql,Mysql,我正在处理一个名为exp1的表,在这个表中有一个名为filename的列,其中包含exp_ara1.txt、exp_gma1.txt、exp_sly1.txt、exp_rcy1.txt、exp_thy1.txt等数据 通过使用MySQL查询,我只想选择文件名为%ara%或%gma%的行。 我正在使用以下命令: Select * from exp1 where filename LIKE ('%ara%' OR '%gm%'); 但这是结果 您的SQL查询已成功执行。 MySQL返回了一个空的结

我正在处理一个名为exp1的表,在这个表中有一个名为filename的列,其中包含exp_ara1.txt、exp_gma1.txt、exp_sly1.txt、exp_rcy1.txt、exp_thy1.txt等数据

通过使用MySQL查询,我只想选择文件名为%ara%或%gma%的行。 我正在使用以下命令:

Select * from exp1 where filename LIKE ('%ara%' OR '%gm%');
但这是结果 您的SQL查询已成功执行。 MySQL返回了一个空的结果集(即零行)。

请尝试以下操作:

Select * from exp1 where filename LIKE ('%ara%') OR filename LIKE ('%gm%');
试试这个:

Select * from exp1 where filename LIKE ('%ara%') OR filename LIKE ('%gm%');

使用
REGEXP
我们可以编写一个术语,以使用替换项进行匹配:

SELECT *
FROM exp1
WHERE filename REGEXP '(.*ara.*)|(.*gm.*)'

使用
REGEXP
我们可以编写一个术语,以使用替换项进行匹配:

SELECT *
FROM exp1
WHERE filename REGEXP '(.*ara.*)|(.*gm.*)'

我认为这是一个最好的过程,好像你有更多的单词要输入,比如:

$sql = array('0'); // Stop errors when $words is empty

foreach($words as $word){
    $sql[] = 'filename LIKE %'.$word.'%'
}

$sql = 'SELECT * FROM exp1 WHERE '.implode(" OR ", $sql);

我认为这是一个最好的过程,好像你有更多的单词要输入,比如:

$sql = array('0'); // Stop errors when $words is empty

foreach($words as $word){
    $sql[] = 'filename LIKE %'.$word.'%'
}

$sql = 'SELECT * FROM exp1 WHERE '.implode(" OR ", $sql);

在MySQL中,您不能像在SQL Server或Oracle中那样使用
CONTAINS
函数,这看起来是您试图做的事情

SELECT * 
FROM exp1
WHERE (filename LIKE ('%ara%') OR filename LIKE ('%gm%'));

在MySQL中,您不能像在SQL Server或Oracle中那样使用
CONTAINS
函数,这看起来是您试图做的事情

SELECT * 
FROM exp1
WHERE (filename LIKE ('%ara%') OR filename LIKE ('%gm%'));

不需要括号。为了使代码更具可读性,您可以将它们放在子表达式周围:
(文件名类似于“%ara%”)或(文件名类似于“%gm%”)
@axiac事实上,我很惊讶括号不会导致错误,因为
类似于
不是一个函数。不需要括号。为了使代码更具可读性,可以将它们放在子表达式周围:
(文件名类似于“%ara%”)或(文件名类似于“%gm%”)
@axiac事实上,我很惊讶括号没有引起错误,as
LIKE
不是一个函数。如果答案对你和其他人都有帮助,请向上投票。如果答案对你和其他人都有帮助,请向上投票。