[英]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.