Вот как выглядит мой стол.
id col1 col2 --------------- 1 ax 2 NULL y 3 NULL z 4 NULL t
col1 имеет значение по умолчанию NULL
.
Я хочу использовать данные col1. Если col1 не равен null, в противном случае используйте данные col2.
function something($col1,$col2) { if(is_null($col1) == true) $var = $col2 else $var = $col1 return $var; } function something2($col1,$col2) { if($col1 === NULL) $var = $col2 else $var = $col1 return $var; }
Вот моя проблема. Обе эти функции возвращают значения $ col2. Но, как вы можете видеть в первой строке, столбец col2 не равен NULL. Что я делаю не так? UPDATE: Ищете решение с PHP, и мне нужны значения col1 и col2.
Также я хочу узнать, является ли использование значений NULL лучшей практикой для этого примера?
Я вижу множество проблем в вашем вопросе:
Я хочу использовать данные col1. Если col2 не является нулевым, If It's я буду использовать данные col2.
Я предполагаю, что вы имеете в виду, что хотите использовать данные col2, если col1 IS null в противном случае использует col1. В этом случае у вас есть проблемы на вашем php. Не уверен, что вы предоставили образец кода или нет, но вы не передаете какие-либо переменные функции и не объявляете их глобальными внутри функции.
function something($col1, $col2){ if(is_null($col1) == true) $var = $col2; else $var = $col1; return $var; } function something2($col1, $col2){ if($col1 === NULL) $var = $col2; else $var = $col1; return $var; } echo something('a','x'); echo something2('a','x');
Это дает вам «а» в обоих случаях
echo something(NULL,'b'); echo something2(NULL,'b');
Это дает вам "b"
Вы должны посмотреть на использование COALESCE () в вашем запросе sql, только вернуть данные, которые вы хотите отобразить. Это помешало бы вам вообще не нуждаться в этой функции / логике.
SELECT Id, COALESCE(col1, col2) FROM yourTable
Кроме того, для PHP вы можете рассмотреть возможность изменения if(is_null($col1) == true)
и используя if(is_null($col1))
. Он меньше, более кратким и устраняет проблемы с количеством =
знаков для использования, а оболочка True
Обновление ответа на включение варианта, предложенного Андреасом:
SELECT Id, col1, col2 , IFNULL(col1, col2) AS NotNullColumn FROM yourTable
Проверьте IFNULL , он даст вам col1, если это не null. Иначе это даст вам col2.
SELECT id, IFNULL(col1, col2) FROM <table>;