Запрос MySQL с помощью CodeIgniter, выбор строк, где поле равно NULL
Я использую класс активной записи CodeIgniter для запроса базы данных MySQL. Мне нужно выбрать строки в таблице, где поле не имеет значения NULL:
$this->db->where('archived !=', 'NULL');
$q = $this->db->get('projects');
что возвращает только этот запрос:
SELECT * FROM projects WHERE archived != 'NULL';
The
9 ответов:
активная запись определенно имеет некоторые причуды. Когда вы передаете массив в
$this->db->where()функция он будет генерировать IS NULL. Например:$this->db->where(array('archived' => NULL));производит
WHERE `archived` IS NULLпричуда заключается в том, что нет эквивалента для отрицательного
IS NOT NULL. Однако есть способ сделать это, который дает правильный результат и все еще избегает утверждения:$this->db->where('archived IS NOT NULL');производит
WHERE `archived` IS NOT NULL
Null не должно быть установлено в строку...
$this->db->where('archived IS NOT', null);он работает правильно, когда null не заключен в кавычки.
CodeIgniter 3
только:
$this->db->where('archived IS NOT NULL');сгенерированный запрос:
WHERE archived IS NOT NULL;$this - > db - >where('archived IS NOT NULL', null,ложные);
обратная:
$this->db->where('archived');сгенерированный запрос:
WHERE archived IS NULL;
гораздо лучше использовать следующие Для не null
где ('archived IS NOT NULL', null);
For равно null
где ('archived', null);
и просто чтобы дать вам еще один вариант, вы можете использовать
NOT ISNULL(archived)как ваш где фильтр.
Codeigniter генерирует запрос "IS NULL", просто оставив вызов без параметров:
$this->db->where('column');сгенерированный запрос:
WHERE `column` IS NULL
один из способов проверить, является ли столбец null или нет
$this->db->where('archived => TRUE); $q = $this->db->get('projects');в php если столбец имеет данные, он может быть представлен как True в противном случае False Чтобы использовать множественное сравнение в команде where и проверить, не являются ли данные столбца null сделайте это как
вот полный пример того, как я фильтрую столбцы в предложении where (Codeignitor). Последнее шоу Not NULL сжатие
$where = array('somebit' => '1', 'status' => 'Published', 'archived ' => TRUE ); $this->db->where($where);
Comments