Count (*) не работает с предложением where - PullRequest
0 голосов
/ 03 февраля 2012
У

есть проблема с довольно простым запросом, который я пытаюсь написать..как ноль.(Они существуют, я их вижу!) Спасибо

Ответы [ 6 ]

4 голосов
/ 03 февраля 2012

Я думаю, вам нужно использовать:

select count (p_id) as mycustomer from person where date_active is null;
1 голос
/ 03 февраля 2012

это должно работать:

select count (p_id) as mycustomer from person where date_active IS null;
1 голос
/ 03 февраля 2012

Вы должны использовать оператор is, чтобы найти ноль:

select count (p_id) as mycustomer from person where date_active is null;

NULL не является значением (оно указывает на отсутствие значения), поэтому вы не можете использовать скалярные операторы, такие как =,! =, <,> И т. Д. В сочетании с NULL.

1 голос
/ 03 февраля 2012
select count (p_id) as mycustomer from person where date_active IS null;

(обратите внимание на оператор IS NULL вместо =)

1 голос
/ 03 февраля 2012

Попробуйте следующее

select count (p_id) as mycustomer from person where date_active is null;

= null неверно и не будет делать то, что вы хотите.Эта ссылка дает более подробную информацию

0 голосов
/ 03 февраля 2012

SQL не работает с двоичной логикой (только true и false). Работает с (как минимум) троичной логикой (true, false и null). Это третье значение усложняет оценку логических условий (например, =, которое вы имеете в условии).
По сути, любое выражение с нулевым значением возвращает нулевое значение, и, поскольку null никогда не является true, запрос не будет возвращать никаких строк, как если бы вы написали

select count (p_id) as mycustomer from person where 1 = 2

Чтобы обойти это, существуют некоторые специальные синтаксические конструкции, наиболее распространенными из которых являются условия is null и is not null. Как указывалось в других ответах, чтобы получить нулевые значения, нужно написать

select count (p_id) as mycustomer from person where date_active is null

Интересной особенностью нулей является то, что они не равны и не равны другим нулям.

select * from person where null=null

и

select * from person where null!=null

оба не возвращают никаких строк.

...