ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 字段的数据类型隐式转换有关系

字段的数据类型隐式转换有关系

原创 Linux操作系统 作者:star_guan2008 时间:2008-03-13 10:11:51 0 删除 编辑
字段的数据类型隐式转换有关系

SQL> create table t1(
  2    id   number,
  3    key_name  varchar2(10));

表已创建。

SQL> insert into t1 values(1, '111');

已创建 1 行。

SQL> insert into t1 values(2, 'sdaf11');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

        ID KEY_NAME
---------- ----------
         1 111
         2 sdaf11
        
测试SQL1:
SQL> select * from t1 where key_name=111;
ERROR:
ORA-01722: 无效数字

测试SQL2:
SQL> select * from t1 where id=1 and key_name=111;
ERROR:
ORA-01722: 无效数字

未选定行

测试SQL3:
SQL> select * from t1 where key_name=111 and id=1;

        ID KEY_NAME
---------- ----------
         1 111

我这里用的数据库版本是9207,优化器是RBO,所以查询语句用的条件是从下往上的顺序的解析,这也说明测试SQL2和测试SQL3执行结果的差异。
你测试的几个sql也说明这个问题。即使后来你加了索引,貌似解决了该问题,实际上是由于条件筛选使用了索引,同时选择出来的结果可以进行隐式的数据转 换,所以才有结果。假如SECTION_ID = 180119对应的key_name='222dddf',此时还是会报错。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10742223/viewspace-206123/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-19

  • 博文量
    82
  • 访问量
    108902