我正在使用名为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返回一个空结果集(即零行)。
答案 0 :(得分:4)
试试这个:
Select * from exp1 where filename LIKE ('%ara%') OR filename LIKE ('%gm%');
答案 1 :(得分:1)
使用REGEXP
我们可以使用替换来编写单个术语以匹配:
SELECT *
FROM exp1
WHERE filename REGEXP '(.*ara.*)|(.*gm.*)'
答案 2 :(得分:1)
我认为这是最好的过程之一,好像你有更多的单词来放入像::
$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);
答案 3 :(得分:0)
在MySQL中,您没有像SQL Server或Oracle那样使用CONTAINS
函数的选项,这就像您尝试的那样。
SELECT *
FROM exp1
WHERE (filename LIKE ('%ara%') OR filename LIKE ('%gm%'));