当前位置: 首页 > news >正文

Oracle 隐式数据类型转换

目录

Oracle类型转换规则:

看如下实验:

1、创建一张表,字段id的类型为number,id字段创建索引,插入一条测试数据

2、我们做如下查询,id的值设置为字符型的'1'

3、查看执行计划:


Oracle类型转换规则:

  • 对于insert和update操作,oracle将值转换为受影响的的列的类型。
  • 对于select操作,oracle会将列的值的类型转换为目标变量的类型。

看如下实验:

1、创建一张表,字段id的类型为number,id字段创建索引,插入一条测试数据

create table test(id number);create index idx_test_id on test(id);insert into test values(1);

2、我们做如下查询,id的值设置为字符型的'1'

3、查看执行计划:

是不是很意外,Oracle没有进行类型转换。使用了索引扫描,把'1'认为是数值型的1。
其实任何的数值型都可以转换为字符型。因此在一个数值型的字段上,添加to_char函数是多余的。
老外总结了一张图,说明了哪些类型间可以直接转换,哪些需要在列上添加函数来转换,非常的好:

-----------------------------------------------------------------------------------------------------------------------------

增加一个nvarchar2(10)字段name

alter table TEST add NAME VARCHAR2(10);

插入测试数据

insert into test values(1,'1');

查询

explain plan for select * from test where name='1';
select * from table(dbms_xplan.display);

查询

explain plan for select * from test where name=1;
select * from table(dbms_xplan.display);

 

http://www.lryc.cn/news/284196.html

相关文章:

  • 压缩编码之不同缩放参数对重建图像质量的影响的python实现——JPEG变换编码不同压缩率的模拟
  • 大数据导论(2)---大数据与云计算、物联网、人工智能
  • 有序矩阵中第 K 小的元素
  • Nginx详细介绍(并从技术层面深度剖析)
  • 单元测试基本概念
  • ECTouch 电商微信小程序 SQL注入漏洞复现(CVE-2023-39560)
  • MCM备赛笔记——熵权法
  • vscode设置terminal的最大行数
  • kafka hang 问题记录
  • Jmeter-BeanShell脚本中for循环里面使用random随机数函数,每次生成的都一样
  • 高级编程。JavaScript中有哪些类型转换机制?
  • Linux系统下常用软件安装汇总,包括mysql,java,git,redis等
  • 【Linux】——期末复习题(一)
  • 【论文阅读】Speech Driven Video Editing via an Audio-Conditioned Diffusion Model
  • 【华为 ICT HCIA eNSP 习题汇总】——题目集4
  • hadoop-common: CMake failed with error code 1
  • 【面试】-科大讯飞日常实习面试
  • MySQL 数据加密
  • 风丘科技为您提供完整的ADAS测试方案
  • 深入理解Rust基本类型
  • cloudflare加速方法
  • 密码学学习笔记(二十四):TCP/IP协议栈
  • 软件测试阶段简介_单元测试、集成测试、配置项测试、系统测试
  • AcWing 1204.错误票据(读取未知个数数据的新方法)
  • 项目上线存在的缓存问题以及存在的debugger和console.log等问题
  • 均线和布林线这样的关系,WeTrade众汇实例这样使用
  • C++中的区块链与加密货币开发
  • 【云略】2023年新茶饮行业社媒营销洞察报告
  • 19. C++ static关键字
  • thinkphp6 模糊查找json下的字段值