[英]use of like statement with or in mysql
I am working on a table with name exp1, in this table there is a column named filename which contain data like exp_ara1.txt, exp_gma1.txt, exp_sly1.txt., exp_rcy1.txt, exp_thy1.txt 我正在处理一个名为exp1的表,该表中有一个名为filename的列,其中包含exp_ara1.txt,exp_gma1.txt,exp_sly1.txt,exp_rcy1.txt,exp_thy1.txt等数据
By using MySQL query I want to select only those rows which have filename either %ara% or %gma%. 通过使用MySQL查询,我只想选择文件名为%ara%或%gma%的那些行。 I am using following command:
我正在使用以下命令:
Select * from exp1 where filename LIKE ('%ara%' OR '%gm%');
but it is results Your SQL query has been executed successfully. 但它是结果您的SQL查询已成功执行。 MySQL returned an empty result set (ie zero rows).
MySQL返回一个空结果集(即零行)。
尝试这个:
Select * from exp1 where filename LIKE ('%ara%') OR filename LIKE ('%gm%');
Using REGEXP
we can write a single term to match using an alternation: 使用
REGEXP
我们可以编写一个单独的术语以使用交替进行匹配:
SELECT *
FROM exp1
WHERE filename REGEXP '(.*ara.*)|(.*gm.*)'
I think this is one of the best process as if you have more multiple words to put in like:: 我认为这是最好的过程之一,好像您要输入多个单词 :
$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);
In MySQL you don't have the option to use the CONTAINS
function like in SQL Server or Oracle, which is what it looks like your trying to do. 在MySQL中,您无法像在SQL Server或Oracle中那样选择使用
CONTAINS
函数,这就是您尝试执行的操作。
SELECT *
FROM exp1
WHERE (filename LIKE ('%ara%') OR filename LIKE ('%gm%'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.