首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql查询值可以为空

问MySql查询值可以为空
EN

Stack Overflow用户
提问于 2020-11-22 14:57:02
回答 1查看 34关注 0票数 0

我有这个问题

代码语言:javascript
复制
SELECT * 
  FROM `Products` 
 WHERE brand REGEXP '$brandFilter' 
   AND categories REGEXP '$categoryFilter' 
   AND color REGEXP '$colorFilter' 
   AND price BETWEEN '$priceMin' AND '$priceMax' 
   AND size REGEXP '$sizeFilter'

我用PHP工作,每个值都可以是空的,如果值是空的,可以在SQL中检查吗?例如:如果'$brandFilter‘不为null

代码语言:javascript
复制
SELECT * 
  FROM Products
 WHERE brand REGEXP '$brandFilter'

可以在代码中做到这一点,但它非常长,因为有可能获得3个值为null

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-22 17:22:18

从SQL的角度来看,您需要OR条件:

代码语言:javascript
复制
SELECT * 
FROM Products 
WHERE (brand      REGEXP :brandFilter    OR :brandFilter    IS NULL)
  AND (categories REGEXP :categoryFilter OR :categoryFilter IS NULL)
  AND (color      REGEXP :colorFilter    OR :colorFilter    IS NULL)
  ...

您可能希望在应用程序中动态构建SQL子句,这可能会提高where代码的效率。

请注意,这使用的是绑定参数,而不是在查询字符串中连接变量。推荐阅读:How can I prevent SQL injection in PHP?。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64951421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档