Заменить ноль на ноль в запросе SQL - PullRequest
0 голосов
/ 12 июня 2019

У меня есть SQL-запрос, который потенциально может вернуть нулевые значения, в случае этого я хочу, чтобы запрос возвратил '0'.Вот запрос

   SELECT (select count(goal) from fixtures where goal='1' and fixture='$fixture') as goalCountHome
from fixtures where fixture='$fixture'LIMIT 1

Любая помощь высоко ценится!

Ответы [ 4 ]

2 голосов
/ 12 июня 2019

Если вы используете MySql, IFNULL(<column_name>, 0) должен сделать.

2 голосов
/ 12 июня 2019

В MySql используйте функцию IFNULL (). Для MsSql используйте функцию ISNULL ().

1 голос
/ 12 июня 2019

Этот запрос:

SELECT (select count(goal) from fixtures where goal='1' and fixture='$fixture') as goalCountHome
FROM fixtures 
WHERE fixture = '$fixture'
LIMIT 1

не может вернуть NULL значения.Подзапрос представляет собой агрегирующий запрос без GROUP BY, поэтому он всегда возвращает одну строку.Эта строка будет содержать результат из COUNT().COUNT() само по себе никогда не сможет вернуть значение NULL.Если строк нет, тогда значение будет равно нулю.

Внешний запрос может вернуть без строк , но это отличается от NULL значений.

Конечноэтот запрос слишком сложен и должен быть просто:

SELECT COUNT(*) as goalCountHome
FROM fixtures 
WHERE fixture = ? AND   -- pass this in as a parameter 
      goal = 1 ;        -- it looks like a number so I assume it is

Обратите внимание, что вы должны передавать параметры, используя правильные параметры, а не разбрасывать строки запроса.

0 голосов
/ 12 июня 2019

если вам нужны все строки, а не строки, где цель не равна нулю, вы можете использовать count (*)

   select count(*) 
   from fixtures
   where goal=1
   and fixture='$fixture'

count(goal) возвращает количество строк, в которых цель не равна нулю count(*) возвращает общее количество выбранных строк

в общем случае, когда вам не нужны нулевые значения в mysql, вы можете ifnull (your_column, value) или coalesce (your_column, value)

на основании вашего комментария кажется вам нужна сумма (цель)

select sum(ifnull(goal,0))
from fixtures
where goal=1 
and fixture='$fixture'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...