Odpytywanie MySQL za pomocą CodeIgniter, wybieranie wierszy, w których pole jest NULL

Używam klasy Active Record CodeIgniter do odpytywania bazy danych MySQL. Muszę wybrać wiersze w tabeli, w której pole nie jest ustawione na NULL:

$this->db->where('archived !=', 'NULL');
$q = $this->db->get('projects');

To zwraca tylko to zapytanie:

SELECT * FROM projects WHERE archived != 'NULL';

Pole archived jest polem DATE.

Czy jest lepszy sposób na rozwiązanie tego problemu? Wiem, że mogę sam napisać zapytanie, ale nie chcę trzymać się aktywnego rekordu w całym moim kodzie.
Author: Ronny-André Bendiksen, 2010-03-22

9 answers

where('archived IS NOT NULL', null, false)
 123
Author: zerkms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-22 01:01:27

Active Record zdecydowanie ma pewne dziwactwa. Po przekazaniu tablicy do funkcji $this->db->where() wygeneruje ona wartość IS NULL. Na przykład:

$this->db->where(array('archived' => NULL));

Produkuje

WHERE `archived` IS NULL 

Dziwactwo polega na tym, że nie ma odpowiednika dla negatywu IS NOT NULL. Istnieje jednak sposób, aby to zrobić, który daje poprawny wynik i nadal wymyka się stwierdzeniu:

$this->db->where('archived IS NOT NULL');

Produkuje

WHERE `archived` IS NOT NULL
 53
Author: J.Money,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-09 17:29:39

Null nie może być ustawione na string...

$this->db->where('archived IS NOT', null);

Działa poprawnie, gdy null nie jest zawinięte w cudzysłowy.

 6
Author: Come2Daddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-27 17:00:41

CodeIgniter 3

Tylko:

$this->db->where('archived IS NOT NULL');

Wygenerowane zapytanie to:

WHERE archived IS NOT NULL;

$this - > db - > where ('zarchiwizowany nie jest NULL', null,false );

Odwrotność:

$this->db->where('archived');

Wygenerowane zapytanie to:

WHERE archived IS NULL;
 5
Author: Rodrigo Prazim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 08:26:58

Znacznie lepiej używać następujących For is not null

Where ('zarchiwizowany nie jest NULL', null);

For is null

Where ('zarchiwizowany', null);

 0
Author: Raza Rafaideen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-24 11:40:05

I aby dać ci jeszcze jedną opcję, możesz użyć NOT ISNULL(archived) jako filtra gdzie.

 0
Author: Dave Strickler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-03 20:22:59

Codeigniter generuje zapytanie "IS NULL" po prostu pozostawiając wywołanie bez parametrów:

$this->db->where('column');

Wygenerowane zapytanie to:

WHERE `column` IS NULL
 0
Author: Lirio Push,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-07 05:31:50

$this - > db - > or_where ('end_date IS', 'NULL', false);

 0
Author: Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-03 14:31:04

Jednym ze sposobów, aby sprawdzić, które kolumny są null lub nie jest

$this->db->where('archived => TRUE);
$q = $this->db->get('projects');

W php jeśli kolumna ma DANE, może być reprezentowana jako True, w przeciwnym razie False Aby użyć polecenia multiple comparison w where I sprawdzić, czy dane kolumn nie są null do it like

Oto pełny przykład filtrowania kolumn w klauzuli where (Codeignitor). Ostatni pokazuje nie NULL kompresję

$where = array('somebit' => '1', 'status' => 'Published', 'archived ' => TRUE );
$this->db->where($where);
 -2
Author: Amir Qayyum Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-14 06:23:36