简体   繁体   English

在mysql中使用like语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM