我正在使用SQL Server数据库,我有一个这样的问题。
为了防止用户在字段中输入任何Null或Zero值,遗憾的是,我必须在SQL中管理此验证。
所以从下表中我有ALINUT_Value(最后一列 - 总是10条记录),所以我的问题是如何在SQL Select中检查这列是否包含JUST NULL和Zeros(不是任何其他值)?
-----------------------------------------------------
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(最后一列)
我希望拥有的所有产品都是:
这是我的表:
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和值的产品
谢谢,
答案 0 :(得分:1)
回答最初的问题:
Select *
from yourTable
Where ALINUT_Value Is Null or ALINUT_Value = 0
答案 1 :(得分:1)
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
答案 2 :(得分:0)
if (
not exists
(select 1 from MyTable where isnull(ALINUT_Value,0) <> 0)
)
begin
print 'ok'
end