您的位置:首页 > 数据库 > Oracle

为什么oracle中字段是varchar型,但是查询的时候不写引号也能查询

2017-07-06 14:39 302 查看
隐形转换,一般是有方向的:

字符和数字比时,从字符转数字;

字符和时间比时,从时间转字符

数值和字符有时候会默认相互转化。

数据类型隐式转换,建议不要依赖隐式数据转换:能转换自然没问题,不能转换是报错;关键的是引起其他不可知问题:运行环境变了,原先正常的sql运行不了;性能问题

当你的条件为数字的时候(不管该字段为字符还数字型),直接写数字就可以查询。

但是为了书写规范,建议你写sql的时候,条件不管数字还是字符,都要使用单引号。

oracle中

如果是number类型的话,象你上边那种,会默认的把带引号的转成数字再进行查询,也就是说和你不带引号是一样的同样,如果是字符类型,这一列保存的都是数字(注意,是这列),那么你不带引号的数字也会被oracle默认转成字符类型。

但是有种情况例外,给你做个例子

create table t_test (id varchar2(10));

 

insert into t_test values ('100');

insert into t_test values ('1000');

 

select * from t_test where id=100;

select * from t_test where id='100';

这个时候,以上两种查询方式都没问题,如果此时再插入一条数据,如下

insert into t_test values ('1000a');

这个时候你再用上边那两个select,其中第一个就会报错了,其实就是oracle会默认转化的关系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle
相关文章推荐