Sql oracle数据库中数字字段的查询

Sql oracle数据库中数字字段的查询,sql,oracle,Sql,Oracle,我的问题可能太愚蠢了,以至于我遗漏了一些非常明显的东西。我有一个表,其中的数字字段表示布尔值,1或0。我的表是这样创建的: create table mytable ("summarized" NUMBER DEFAULT 0) 。。我想查询数字字段“Summated”等于0的记录。现在看一下下面的查询,实际输出放在查询后面: select count(*) from mytable where summarized = 0; -- 0 select count(*) from mytable

我的问题可能太愚蠢了,以至于我遗漏了一些非常明显的东西。我有一个表,其中的数字字段表示布尔值,1或0。我的表是这样创建的:

create table mytable ("summarized" NUMBER DEFAULT 0)
。。我想查询数字字段“Summated”等于0的记录。现在看一下下面的查询,实际输出放在查询后面:

select count(*) from mytable where summarized = 0; -- 0
select count(*) from mytable where summarized = 1; -- 0
select count(*) from mytable where summarized != 0; -- 88223
select count(*) from mytable where summarized != 1; -- 1594
select count(*) from mytable where to_char(summarized) = '0'; -- 1594
select summarized, count(*) from mytable group by summarized; -- 1 = 88223, 0 = 1594
我的第一个本能是像第一个一样创建我的查询。我似乎不明白为什么它不起作用,如果我想在where子句中使用'equals 0',为什么我必须使用to_char函数

编辑: 当我尝试答案时,我注意到我无法重现这个问题,即使是使用带引号的列名。在复制了我的表并删除了旧表之后,我的查询和应用程序再次正常工作。我不确定是什么导致了异常,但现在已经不见了


很抱歉占用了你们的时间,但我要感谢你们在回答中的有用的评论!(我希望我能给你一张赞成票,但我的代表票还是太低了)

创建表的语法

create table mytable (summarized NUMBER DEFAULT 0)


一个好的开始是在该列上放置一个检查约束:

alter table mytable add constraint chk_mytable_summarized check (summarized in (0,1))
。。。还有一个非空约束

alter table mytable modify (summarized  not null)

(如Nagaraj所说,不要在对象名称周围使用双引号)

谢谢您的评论。我接受了你的回答,因为这个问题现在可以结束了(请参阅问题中的编辑)。你现在可以投票:)
alter table mytable modify (summarized  not null)