Oracle数据隐式转换规则
来源:互联网 发布:2017mac最新系统是什么 编辑:程序博客网 时间:2024/06/06 06:37
Oracle数据隐式转换规则
The following rules govern the direction inwhich Oracle makes implicit data type conversions(在oracle中,如果不同的数据类型之间关联,如果不显式转换数据,则它会根据以下规则对数据进行隐式转换):
1) During INSERT and UPDATE operations, Oracle converts the value tothe datatype of the affected column
(对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型)
如:
假如id列的数据类型为number
update t set id='1'; -> 相当于 update t set id=to_number('1');
insert into t(id) values('1') -> insert into t values(to_number('1'));
2) During SELECT FROM operations, Oracle converts the data from thecolumn to the type of the target variable
(对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型).
如:
假设id列的数据类型为varchar2
select * from t where id=1; -> select * from t where to_number(id)=1;
但如果id列的数据类型为number,则
select * from t where id='1'; -> select * from t where id=to_number('1');
3) When comparing a character value with a NUMBER value, Oracleconverts the character data to NUMBER
(当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型).
如:
假设id列的数据类型为number
select * from t where id='1'; -> select * from t where id=to_number('1');
4) When comparing a character value with a DATE value, Oracle convertsthe character data to DATE
(当比较字符型和日期型的数据时,oracle会把字符型转换为日期型).
如:
假设create_date为字符型,
select * fromt where create_date>sysdate; -> select * from t whereto_date(create_date)>sysdate;(注意,此时session的nls_date_format需要与字符串格式相符)
假设create_date为date型
select * fromt where create_date>'2006-11-11 11:11:11'; -> select * from t wherecreate_date>to_date('2006-11-11 11:11:11'); (注意,此时session的nls_date_format需要与字符串格式相符)
5) When you use a SQL function or operator with an argument of adatatype other than the one it accepts, Oracle converts the argument to theaccepted datatype.
(如果调用函数或过程等时,如果输入参数的数据类型与函数或者过程定义的参数数据类型不一直,则oracle会把输入参数的数据类型转换为函数或者过程定义的数据类型)
如:
假设过程如下定义
p(p_1 number)
exec p('1'); -> exec p(to_number('1'));
6) When making assignments, Oracle converts the value on the right sideof the equal sign (=) to the datatype of the target of the assignment on theleft side
(赋值时,oracle会把等号右边的数据类型转换为左边的数据类型).
如:
var a number
a:='1'; - > a:=to_number('1');
7) During concatenation operations, Oracle converts from noncharacterdatatypes to CHAR or NCHAR
(用连接操作符(||)时,oracle会把非字符类型的数据转换为字符类型).
如:
select 1||'2' from dual; -> select to_char(1)||'2' from dual;
8) During arithmetic operations on and comparisons between characterand noncharacter datatypes, Oracle converts from any character datatype to anumber, date, or rowid, as appropriate. In arithmetic operations betweenCHAR/VARCHAR2 and NCHAR/NVARCHAR2, Oracle converts to a number.
如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等。如果CHAR/VARCHAR2和NCHAR/NVARCHAR2之间作算术运算,则oracle会将她们都转换为number类型的数据再做比较。
9) Comparisons between CHAR/VARCHAR2 and NCHAR/NVARCHAR2 types mayentail different character sets. The default direction of conversion in suchcases is from the database character set to the national character set.
比较CHAR/VARCHAR2和NCHAR/NVARCHAR2时,如果两者字符集不一样,则默认的转换方式是将数据编码从数据库字符集转换为国家字符集。
- Oracle数据隐式转换规则
- oracle数据隐式转换规则
- Oracle数据隐式转换规则
- oracle数据隐式转换规则
- Oracle数据隐式转换规则
- Oracle数据隐式转换规则
- 记录一下ORACLE数据隐式转换规则
- oracle 类型转换函数 & oracle 隐式转换规则总结
- 隐式类型转换规则
- Scala 隐式转换规则
- C语言隐式类型转换规则
- C语言隐式类型转换规则
- C语言隐式类型转换规则
- PL/SQL中的数据类型隐式转换规则
- C语言隐式类型转换规则
- PL/SQL中的数据类型隐式转换规则
- js的双等号隐式转换规则
- C语言中算术运算的隐式类型转换规则
- Http教程
- 直接拿来用!最火的Android开源项目
- CSDN博客
- win7下安装配置tomcat,java运行环境
- 锁定页面滚动条以及iframe拿到父页面的节点值
- Oracle数据隐式转换规则
- wordpress 常用函数
- JavaScript在Android的WebView中出现一个问题
- Play a game + 博弈
- 两个常见位操作面试题:不用加减乘除运算符计算两数之和及a=b*3
- WebService获得服务器时间
- Java读取Excel内容
- flex的tree动态加载大量数据与滚动条相关的问题
- cocos2d-x 交叉编译,维护mk文件的“万能”配置解决(转载)