Sql-запрос, который не возвращает нулевые значения в результате
Я действительно Новичок в sqlserver.
Я запрашиваю некоторые данные из базы данных, и это также возвращает нулевые значения с результатом.
Мой запрос:
select amount, distributorid from paymants
Некоторые дистрибьюторы имеют null values в amount column.
Пожалуйста, помогите!
Спасибо
6 ответов:
Вы должны использовать
is null(илиis not null) для фильтрации нулевых значений.select amount, distributorid from paymants where amount is not nullЕсли вам нужны все записи с нулевой суммой с другим значением (скажем, -1), вы можете использовать
isnullилиcoalesce, как показано ниже.select coalesce(amount,-1) amount, distributorid from paymantsИли, если вам нужно только количество нулевых записей, вы можете сделать;
select amount, distributorid from paymants where amount is null
Вы можете отфильтровать столбцы с нулевыми значениями для суммы, используя
SELECT amount, distributorid FROM paymants WHERE amount IS NOT NULLОднако, если вы ожидаете суммы для всех строк, то может быть хорошей идеей спросить, почему эти нули вставляются в первую очередь.
Когда вы определяете таблицу, если есть столбец, в котором вы не хотите разрешать значения null, вы можете указать свойство NOT NULL
CREATE TABLE example ( someColumn INT NOT NULL )
Если вы хотите строки, которые имеют нулевые значения, но что значение должно быть 0, вместо этого вы можете написать:
SELECT ISNULL(amount,0), distributorid FROM paymantsСсылка с информацией об ISNULL - > http://technet.microsoft.com/en-us/library/ms184325.aspx
И, как указывалось во многих других ответах, если вы не хотите, чтобы эти строки возвращались вообще, вы можете просто написать:
select amount, distributorid from paymants where amount is not null
Если у вас нет фильтра (предложение WHERE), то строки не будут отфильтрованы.
SELECT amount, distributorid FROM paymants WHERE amount IS NOT NULL
Решение-1:
Если вам просто нужно вернуть значения, которые не являются null, то попробуйте следующее:
select amount, distributorid from paymants where amount is not nullРешение-2:
Если вам нужно не только вернуть значения, которые не являются null, но и изменить значения null в пустые строки или любое другое значение по умолчанию, то попробуйте следующее:
Во-первых, измените все нулевые значения на пустые строки или значение по умолчанию, скажем, 0:
update paymants set amount = '' or amount = 0 where amount is nullДалее, возьмите записи:
select amount, distributorid from paymantsНадеюсь, что эти решения прояснил твое замешательство.
Comments