/ / mysql не сравнява NULL като празна стойност - php, mysql, mysqli

mysql не сравнява NULL като празна стойност - php, mysql, mysqli

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