MySQLi не сравнява NULL като празна стойност.
В моя случай:
if($Id == 1) {
$cond = " AND my_field != "" ";
} elseif ($Id == 2){
$cond = " AND my_field = "" ";
}
Докато изпълнявам mysql изявление като !=""
в WHERE
условието резултата не е точно противоположен на резултата =""
в състояние WHERE. и тук !=""
изявление перфектно работи добре.
Но когато сложа това условие elseif
тя работи добре.
elseif ($Id == 2){
$cond = " AND my_field IS NULL ";
}
Отговори:
0 за отговор № 1Всъщност причината за заявката не евръщането на правилния резултат е, че сравнява "" с NULL, съхранени в базата данни. Но всяко сравнение с NULL в MySQL връща NULL, което не е нито вярно, нито невярно. Следователно, той винаги отхвърля записите на NULL стойности, независимо от използвания оператор, т.е. = или! =.
Проверете тази заявка и ще можете да я разберете по-ясно
SELECT 0 IS NULL , 0 IS NOT NULL , "" IS NULL , "" IS NOT NULL, NULL != NULL, NULL = NULL, NULL != "", NULL = ""
6 за отговор № 2
NULL не е същото като празен низ в MySQL. Опитвам
"AND (orders.user_id = "" OR orders.user_id IS NULL)"
0 за отговор № 3
Null е специална стойност на случая в SQL като цяло, не можете да сравните NULL така id=null , id != null
но id is null , id is not null
можете да ги разгледате:
http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html
http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html