5

我真的是 sqlserver 的新手。

我正在从数据库中查询一些数据,它还返回空值和结果。

我的查询是;

select amount, distributorid from paymants

一些分销商已经null values amount column.

请帮忙!

谢谢

4

6 回答 6

13

您应该使用is null(或is not null) 过滤空值。

select amount, distributorid 
from paymants
where amount is not null

如果您需要所有具有空值且具有另一个值(例如,-1)的记录,您可以使用isnullcoalesce如下所示。

select coalesce(amount,-1) amount, distributorid 
from paymants

或者,如果您只需要数量为空的记录,您可以这样做;

select amount, distributorid 
from paymants
where amount is null 
于 2013-10-19T09:01:33.680 回答
2

如果您想要具有 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
于 2013-10-19T09:21:35.287 回答
1

您可以使用以下方式过滤掉具有空值的列

SELECT amount, distributorid FROM paymants WHERE amount IS NOT NULL  

但是,如果您期望所有行的数量,那么最好先询问为什么要插入这些空值。

当你定义表时,如果有一列你不想允许空值,你可以指定 NOT NULL 属性

CREATE TABLE example ( someColumn INT NOT NULL )
于 2013-10-19T09:08:29.777 回答
0

如果您没有过滤器(WHERE 子句),则不会过滤行。

SELECT amount, distributorid 
FROM paymants
WHERE amount IS NOT NULL
于 2013-10-19T09:01:17.950 回答
0

从付款人中选择金额,分发者 ID,其中金额不为空

于 2013-10-19T15:29:57.343 回答
0

解决方案-1:

如果您只需要返回非空值,请尝试以下操作:

select amount, distributorid 
from paymants
where amount is not null

解决方案-2:

如果你不仅需要返回不为空的值,而且还需要将空值更改为空字符串或任何其他默认值,请尝试以下操作:

首先,将所有空值更改为空字符串或默认值,例如 0:

update paymants
set amount = ''
or amount = 0
where amount is null

接下来,获取记录:

select amount, distributorid
from paymants

希望这些解决方案能消除您的困惑。

于 2014-03-20T07:44:42.457 回答