1) During INSERT and UPDATE operations, Oracle converts the value to the datatype of the affected column.对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。如假如id列的数据类型为numberupdate 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 the column to the type of the target variable.对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型。如假设id列的数据类型为varchar2select * 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, Oracle converts the character data to NUMBER.当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。如假设id列的数据类型为numberselect * from t where id='1'; -> select * from t where id=to_number('1');--------------------------------------------------------------4) When comparing a character value with a DATE value, Oracle converts the character data to DATE.当比较字符型和日期型的数据时,oracle会把字符型转换为日期型。如假设create_date为字符型,select * from t where create_date>sysdate; -> select * from t where to_date(create_date)>sysdate;(注意,此时session的nls_date_format需要与字符串格式相符)假设create_date为date型,select * from t where create_date>'2006-11-11 11:11:11'; -> select * from t where create_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 a datatype other than the one it accepts, Oracle converts the argument to the accepted 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 side of the equal sign (=) to the datatype of the target of the assignment on the left side.赋值时,oracle会把等号右边的数据类型转换为左边的数据类型。如var a numbera:='1'; - > a:=to_number('1');--------------------------------------------------------------7) During concatenation operations, Oracle converts from noncharacter datatypes 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 character and noncharacter datatypes, Oracle converts from any character datatype to a number, date, or rowid, as appropriate. In arithmetic operations between CHAR/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 may entail different character sets. The default direction of conversion in such cases is from the database character set to the national character set.比较CHAR/VARCHAR2 和NCHAR/NVARCHAR2时,如果两者字符集不一样,则默认的转换方式是将数据编码从数据库字符集转换为国家字符集。--------------------------------------------------------------简单总结:比较时,一般是字符型转换为数值型,字符型转换为日期型算术运算时,一般把字符型转换为数值型,字符型转换为日期型连接时(||),一般是把数值型转换为字符型,日期型转换为字符型赋值、调用函数时,以定义的变量类型为准。

oracle date 隐式转换,PL/SQL中的数据类型隐式转换规则相关推荐

  1. PL/SQL中的数据类型隐式转换规则

    原文来自  Techfox IT技术论坛 1) During INSERT and UPDATE operations, Oracle converts the value to the dataty ...

  2. Oracle数据库第四课——PL/SQL中的条件控制

    知识点: PL/SQL 有 3 种类型的条件控制结构:IF.ELSIF 和 CASE 语句.掌握 IF 语句的用法, 掌握 ELSIF 语句的用法, 理解嵌套 IF 语句的用法, 掌握 CASE 语句 ...

  3. oracle 偶数与奇数,在PL / SQL中计算数字中的奇数和偶数

    我们给定一个正整数数字,任务是使用PL / SQL计算数字中奇数和偶数的计数. PL / SQL是SQL与编程语言的过程功能的组合.它是由Oracle Corporation在90年代初开发的,目的是 ...

  4. 如何找到隐式转换的SQL?

    隐式转换相关的文章, <从隐式转换案例,来挖掘开发人员的技能提升> <浅谈显式转换和隐式转换> <隐式转换的案例场景> 我们知道,隐式转换是在开发过程中非常容易进的 ...

  5. 金仓数据库KingbaseES 迁移工具—PL/SQL中Oracle和KingbaseES 的对比

    关键字: KingbaseES.PL/SQL.存储过程.函数 一.PL/SQL语言兼容特性 在 PL/SQL 语言方面,KingbaseES 提供了大量的Oracle 兼容特性.这些特性使得大多数的 ...

  6. 在pl/sql中使用exp/imp工具实现oracle数据导出/导入

    在pl/sql中使用exp/imp工具实现oracle数据导出/导入 2006年11月19日 星期日 10:59 Oracle 数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令 ...

  7. Oracle入门(十四.4)之在PL / SQL中使用变量

    一.变量的使用 (1)使用变量的原因 •临时存储数据 •储存值的操作 •可重用性 (2)处理PL / SQL中的变量 变量是: •在声明部分声明并初始化 •在可执行部分中使用并分配新值 变量可以是: ...

  8. oracle PL/SQL(procedure language/SQL)程序设计(在PL/SQL中使用SQL)

    在PL/SQL程序中,允许使用的SQL语句只有DML和事务控制语句,使用DDL语句是非法的. 使用SELECT语句从数据库中选取数据时,只能返回一行数据. 使用COMMIT,  ROLLBACK, 和 ...

  9. Oracle在Pl/sql中的存储过程----zhoudianzhang

    Oracle 存储过程 目录 Oracle 存储过程... 1 Oracle存储过程基础知识... 1 Oracle存储过程的基本语法... 2 关于Oracle存储过程的若干问题备忘... 4 1. ...

最新文章

  1. ADF:动态视图对象
  2. 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能 1
  3. lua OOP实现对象的链式调用
  4. 分享一个基于事件时间线的Javascript类库-Chronoline
  5. android trace获取和分析
  6. windows server 2012 r2 *** 服务器搭建
  7. 二元序列游程编码c语言,基于游程编码数据压缩算法设计与实现.doc
  8. HTML期末大学生网页设计作业-我的家乡
  9. 图片转公式再转到word或者wps里面
  10. 腾讯互娱2021年游戏客户端开发工程师暑期实习生面试经历
  11. ros2 foxy 报错缺少“diagnostic_updater“,By not providing “Finddiagnostic_updater.cmake“ in CMAKE_MODULE_P
  12. LoveChat独立部署即时通讯IM(前台后台不开源)聊天APP
  13. EcShop常用 促销活动表结构
  14. Ubuntu IDEA返回上一次位置快捷键失效问题解决
  15. 在OpenGL中实现Geometry Instancing
  16. JZOJ 5207【GDOI2018模拟7.7】暴力大神hxx
  17. 可以玩所有游戏的计算机配置,笔者教你玩大型游戏的电脑配置
  18. 我是漂移王-说明介绍
  19. STM32笔记之PWM输出,调节频率及占空比
  20. PAT练习 星际密码

热门文章

  1. for循环多次调用cuda kernel函数_CUDA程序设计入门(二)——核函数
  2. echars x轴单位_pyecharts 之神奇的轴索引
  3. .form文件_含文件上传的form表单AJAX提交小结
  4. c需要实现安装卸载Linux模块,Linux内核模块编译与加载
  5. leetcode刷题:数组中第K个最大的元素
  6. python是动态还是静态_python之静态方法和动态方法介绍
  7. php raido mysql,linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?
  8. android os苹果手机助手,深度系统V20(1003)内测招募:新增手机助手,支持安卓/iOS端...
  9. pcb二次钻孔_作为一名合格的PCB设计工程师,了解生产制造很重要
  10. SpringSecurity Basic Authentication