Mysql 仅当字符串参数不是null或空字符串时才使用where条件

Mysql 仅当字符串参数不是null或空字符串时才使用where条件,mysql,Mysql,我有一个查询,如果参数不是null或空字符串,我只想使用where条件 select users.user_id, users.fname, users.lname, Certifications.certName, skills.skillName from users left join Certifications on users.user_id = Certifications.user_id left join specializations on users.user_id = s

我有一个查询,如果参数不是null或空字符串,我只想使用where条件

select
users.user_id,
users.fname,
users.lname,
Certifications.certName,
skills.skillName
from users
left join Certifications on users.user_id = Certifications.user_id
left join specializations on users.user_id = specializations.user_id
left join skills on skills.user_id = skills.user_id
where
(Certifications.certName is not null and Certifications.certName like 'CCNA Routing and Switching')  or 
(skills.skillName is not null and skills.skillName like '') or
(users.location is not null and users.location like '') 
group by users.user_id

因此,如果
skillName
location
的搜索词为空,我不想在
where
子句中包含这些词

您在前端就知道这一点。相应地进行调整。

您必须仅使用不为null的参数构建查询

$whereClauses = array();
if (!empty($certifications)) {
   $whereClauses[] = 'Certifications.certName like ?';
}
if (!empty($skillName)) {
   $whereClauses[] = 'skills.skillName like ?';
}
if (!empty($location)) {
   $whereClauses[] = 'users.location like ?';
}
$query .= implode(' OR ', $whereClauses);

然后,当然,您需要将相应的参数绑定到?字符

这些搜索词来自哪里?您是如何生成此查询的?也许您可以尝试类似于
($searchTerm!=''和skills.skillName类似于“$searchTerm”)
?我有一个jquery方法,它将json数据传递给一个php文件,该文件实际调用数据库中的查询。然后让php在生成查询时只添加它需要的子句。Rocket说了什么↑ . 否则你只是说,哦,对不起,开玩笑而已