簡體   English   中英

MySql 查詢值可以為空

[英]MySql Query value can be null

我有這個查詢

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' 不為空

SELECT * 
  FROM Products
 WHERE brand REGEXP '$brandFilter'

可以在代碼中做到這一點,但它很長,因為有可能得到 3 個空值

感謝您的幫助!

從 SQL 的角度來看,您需要OR條件:

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)
  ...

您可能希望在應用程序中動態構建where子句,這可能會產生更高效的 SQL 代碼。

請注意,這使用綁定參數而不是連接查詢字符串中的變量。 推薦閱讀:如何防止PHP中的SQL注入? .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM