簡體   English   中英

MySQL有時會搜索null

[英]mySQL sometimes search for null

我的mySQL有一個小問題:

   if ($rooflightReportSalesReleaseFromDate !== "" ) {
       $sql .= "AND (date(orderRelease.Sales_Release_Date)) >= '" . $rooflightReportSalesReleaseFromDate
             . "' OR orderRelease.Sales_Release_Date IS NULL" ;
   }
   if ($rooflightReportSalesReleaseToDate !== "") {
       $sql .= " AND (date(orderRelease.Sales_Release_Date)) <= '" . $rooflightReportSalesReleaseToDate
       . "' OR orderRelease.Sales_Release_Date IS NULL";
   }

$ rooflightReportSalesReleaseToDate和$ rooflightReportSalesReleaseFromDate有時為空,但是我想知道兩個日期是否都具有值,但它仍返回null(可能是因為OR語句)。 有沒有一種方法可以讓我處理空/空記錄,因為如果我沒有or語句(或者空檢查是獨立的),我會報錯

謝謝。

您正在混合AND和OR,因此很可能是運算符優先級問題。 只需在OR運算符周圍加上括號即可:

if ($rooflightReportSalesReleaseFromDate !== "" ) {
    $sql .= "AND (
        date(orderRelease.Sales_Release_Date) >= '" . $rooflightReportSalesReleaseFromDate . "'
        OR orderRelease.Sales_Release_Date IS NULL
    )" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
    $sql .= " AND (
        date(orderRelease.Sales_Release_Date) <= '" . $rooflightReportSalesReleaseToDate . "'
        OR orderRelease.Sales_Release_Date IS NULL
    )";
}

話雖如此,假設Sales_Release_Date包含date + time,但變量僅包含date,則可以像這樣消除date()

if ($rooflightReportSalesReleaseFromDate !== "" ) {
    $sql .= " AND (orderRelease.Sales_Release_Date >= '" . $rooflightReportSalesReleaseFromDate . "' OR orderRelease.Sales_Release_Date IS NULL)" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
    $sql .= " AND (orderRelease.Sales_Release_Date < '" . $rooflightReportSalesReleaseToDate . "' + INTERVAL 1 DAY OR orderRelease.Sales_Release_Date IS NULL)";
    // check for less than only -------------------^                                              ^
    // add one day to end date --------------------------------------------------------------------
}

暫無
暫無

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

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