
Oracle数据库查询时Where后面的条件能把数值类型的数据用单引号引起来查询么?
我建立表中字段位:snonumber(2),插入数据然后检索select*fromtextwheresno!=11;select*fromtextwheresno!='1...
我建立表中字段位:sno number(2), 插入数据
然后检索
select * from text where sno != 11;
select * from text where sno != '10'
都出正确的结果。求解释! 展开
然后检索
select * from text where sno != 11;
select * from text where sno != '10'
都出正确的结果。求解释! 展开
4个回答
展开全部
oracle中
如果是number类型的话,象你上边那种,会默认的把带引号的转成数字再进行查询,也就是说和你不带引号是一样的
同样,如果是字符类型,这一列保存的都是数字(注意,是这列),那么你不带引号的数字也会被oracle默认转成字符类型。
但是有种情况例外,给你做个例子
create table test
(id varchar2(10));
insert into test values ('100');
insert into test values ('1000');
select * from test where id=100;
select * from test where id='100';
这个时候,以上两种查询方式都没问题,如果此时再插入一条数据,如下
insert into test values ('1000a');
这个时候你再用上边那两个select,其中第一个就会报错了,其实就是oracle会默认转化的关系
展开全部
可以的。
例如下表TEST中 plant_code字段是number类型的
SN BOXID PLANT_CODE LOT_ID
12 101,102,103,104,105 204 1001
13 103,110 204 1001
select *
from TESTa
where a.plant_code =204
结果和
select *
from TESTa
where a.plant_code ='204'是一样的.
原因是 Oracle会对条件做隐式转换,将字符型数据转为数值型的。
例如下表TEST中 plant_code字段是number类型的
SN BOXID PLANT_CODE LOT_ID
12 101,102,103,104,105 204 1001
13 103,110 204 1001
select *
from TESTa
where a.plant_code =204
结果和
select *
from TESTa
where a.plant_code ='204'是一样的.
原因是 Oracle会对条件做隐式转换,将字符型数据转为数值型的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么该出错误结果?
追问
一开始我认为Where后面的条件类型不匹配,怎么会不报错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询