create table t1 (col1 varchar2(6), col2 varchar(6) );
insert into t1 values ('1','123');
insert into t1 values ('2','1:3'); 建立以上表,执行下面的语句会报ORA-01722错误。原因是ORACLE自作聪明猪头般的把字段中的值隐含的转换成数字了。
update t1 set col2='3'+col2注意:
update t1 set col2='3'+col2 where col1='1'
修改第一条记录时不报错,update t1 set col2='3'+col2 where col1='2'
修改第二条记录时报错,因为隐含的转换成数字,可‘:’字符不能转换。
如何能让ORACLE的猪头不自做主张、弄巧成拙把VARCHAR2的字段在没经过我允许又不通知我的情况下,隐含转换成数字呢?
insert into t1 values ('1','123');
insert into t1 values ('2','1:3'); 建立以上表,执行下面的语句会报ORA-01722错误。原因是ORACLE自作聪明猪头般的把字段中的值隐含的转换成数字了。
update t1 set col2='3'+col2注意:
update t1 set col2='3'+col2 where col1='1'
修改第一条记录时不报错,update t1 set col2='3'+col2 where col1='2'
修改第二条记录时报错,因为隐含的转换成数字,可‘:’字符不能转换。
如何能让ORACLE的猪头不自做主张、弄巧成拙把VARCHAR2的字段在没经过我允许又不通知我的情况下,隐含转换成数字呢?
解决方案 »
- 在原有表上新增一列(很有挑战性)
- 查找每个列最长数据的长度
- 求一条sql语句
- linux 下的java 程序调用sqlplus执行.sql文件乱码
- 郁闷!!!!为什么ORACLE总是不能自己启动?
- ---c#调用oracle存储过程的调用问题---
- 如何在oracle8.0.4中获取用户的ip地址?
- 求助:)我的oracle开始运行正常,后来把域去掉,加入一个工作组后,不能启动,为何?
- 如何在oracle9i的Enterprise Manager Console中建一个新的方案?
- sqlldr导入问题
- oracle存储过程发送email报错 急 急 急!!!
- 如何通过程序配置oracle客户端?
t1 set col2='3'|| col2 where col1='2'
还有你说的oracle 转换其实是 oracle 中一种隐式转换 比如 char 和varchar oracle 就能自动转换 .当然建议用显式转换是个好习惯
而ORACLE字符串相加必须用他独创的||,sql语言真的应该强制规范,ORACLE总是只作聪明,这样很不利于开发。
我就是同时使用MSSQL和ORACLE的,但因为MSSQL和ORACLE的实用性、方便性上,我是能不用ORACLE就不用,尽量用MSSQL,所以对ORACLE恶心的不通用的独创东西,很容易忘记。