在同一列中获取两种类型的值SQL

Get two types of value in the same column SQL

我正在使用 SQL 服务器数据库,但我遇到了这样一个问题。

为了防止用户在字段中输入任何 Null 或零值,不幸的是,我必须在 SQL 中管理此验证。

所以从下面的 table 中,我有 ALINUT_Value(最后一列 - 总是 10 条记录),所以我的问题是如何检查此列是否仅包含 NULL 和零(不是SQL Select?

中的任何其他值)
-----------------------------------------------------
ALINUT_NUT_Id, ALINUT_Id, ALINUT_ALI_Id, ALINUT_Value
-----------------------------------------------------

1   200463  18822   0.0000
2   200464  18822   0.0000
3   200466  18822   NULL
4   200465  18822   0.0000
5   200467  18822   NULL
6   200468  18822   NULL
7   200469  18822   NULL
8   200462  18822   0.0000
9   200461  18822   0.0000
10  200470  18822   NULL

我在 SQL、

中的另一个新观点

我有一个产品列表,每个产品包含 10 行 ALINUT_value(最后一列)

我想要的结果是所有的产品:

这是我的table:

    PRD_ID, ALI_Id, ALI_ALISRC_Id, ALINUT_NUT_Id, ALINUT_ALI_Id, ALINUT_Value
    263 14177   2   1   14177   30.0000
    263 14177   2   2   14177   40.0000
    263 14177   2   3   14177   60.0000
    263 14177   2   4   14177   50.0000
    263 14177   2   5   14177   47.0000
    263 14177   2   6   14177   80.0000
    263 14177   2   7   14177   90.0000
    263 14177   2   8   14177   20.0000
    263 14177   2   9   14177   10.0000
    263 14177   2   10  14177   NULL 

    304 16880   2   1   16880   NULL
    304 16880   2   2   16880   NULL
    304 16880   2   3   16880   NULL
    304 16880   2   4   16880   NULL
    304 16880   2   5   16880   NULL
    304 16880   2   6   16880   NULL
    304 16880   2   7   16880   NULL
    304 16880   2   8   16880   NULL
    304 16880   2   9   16880   NULL
    304 16880   2   10  16880   NULL

    305 16880   2   1   16881   NULL
    305 16880   2   2   16881   0
    305 16880   2   3   16881   NULL
    305 16880   2   4   16881   NULL
    305 16880   2   5   16881   0
    305 16880   2   6   16881   NULL
    305 16880   2   7   16881   NULL
    305 16880   2   8   16881   0
    305 16880   2   9   16881   NULL
    305 16880   2   10  16881   NULL

到目前为止我尝试了什么:

SELECT COUNT(Product.PRD_ID) AS COUNTCOLUMNPRD ,PRD_ID,ALISRC_Name,ALINUT_Value
            FROM Product
                INNER JOIN Aliment ON ALI_Id = PRD_ALI_Id
                INNER JOIN AlimentNutrient on ALI_Id = ALINUT_ALI_Id
                LEFT OUTER JOIN AlimentSource ON ALISRC_Id = ALI_ALISRC_Id
            WHERE ALISRC_ALISRCT_Id = 2 and ALINUT_Value = 0 OR ALINUT_Value IS NULL
            GROUP BY PRD_ID,ALISRC_Name,ALINUT_Value
            Having count(Product.PRD_ID) = 10

但它没有得到在 alinut_value 列

中同时具有 null 和值的产品

谢谢,

if (
    not exists 
    (select 1 from MyTable where isnull(ALINUT_Value,0) <> 0)
    )
begin
    print 'ok'
end

第一个问题的答案:

Select *
from yourTable
Where ALINUT_Value Is Null or ALINUT_Value = 0
create table #temp(col1 int identity(200,1),col2 float)

insert into #temp(col2) values(NULL)
insert into #temp(col2) values(5)
insert into #temp(col2) values(0)
insert into #temp(col2) values(11)

select * from #temp where col2 IS NULL or col2 = 0

所以在你的情况下:

select * from ALINUT where ALINUT_VALUE IS NULL OR ALINUT_VALUE = 0