Sql-запрос, который не возвращает нулевые значения в результате



Я действительно Новичок в sqlserver.



Я запрашиваю некоторые данные из базы данных, и это также возвращает нулевые значения с результатом.



Мой запрос:



select amount, distributorid from paymants


Некоторые дистрибьюторы имеют null values в amount column.



Пожалуйста, помогите!



Спасибо

642   6  

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

Выберите сумму, distributorid из расчетов, где сумма не является 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

    Ничего не найдено.