关于 char(10) 与 varchar(20) 两个类型的字段的比较 (oracle 数据库)

Oracle char 与 varchar2的区别 char和Varchar2在Oracle的内部存储格式都一样都是数据长度length+实际数据data,其中数据长度length用1-3个字节表示,length255用3个字节表示。 Thomas Kyte的建议是忘记有char类型的存在,在一切需要字符的地方都是用varchar2格式。 “不过,如果混合使用并匹配 VARCHAR2 和 CHAR ,你就会不断地遭遇这个问题。不仅如此,开发人员 现 在还必须在应用中考虑字段宽度。如果开发人员喜欢使用 RPAD() 技巧将绑定变量转换为某种能与 阅读详情
 关于 char(10) 与 varchar(20) 两个类型的字段的比较 (oracle 数据库): 


 
 有两个表:
 
 A表:
 
 a_id : int
 a_code : char(10) = '123'
 a_name : varchar(50)
 
 
 B表:
 
 b_id : int
 b_code : varchar(20) = '123'
 b_name : varchar(50)
 
 现需要 使用 code 字段关联这两个表:
 
 一开始,我错误的写成:
 
 select * from a left join b on a.a_code = b.b_code


 
 发现没有结果为空。
 
 经仔细的研究,正确的写法为(与格式无关):
 

 select * 
 from a
	left join b
		on a.a_code = CAST( trim( substr( b.b_code, 0, 10) ) AS char(10) ) 



这样,结果出来了,半天的时间学会的小技巧。
浅析Oracle中char和varchar2的区别 char是定长的 char(10)   varchar2(10)  同样存 a ,char占用了10个字符,varchar2 只占用了 一个字符(一个中文占两个字符,英文占一个)。 但是char的查询速度要比varchar2快。varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些。相对于上千万的记录来说。一般的项目 没什么区别,随便用。 您可能感兴趣的文章:oracle to_char函数将number转成stringOracle to_char函数的使用方法SQL中Charindex和Oracle中对应的函数Instr 立即下载

相关推荐

【黑马点评】项目知识点及面经整理

【黑马点评】项目知识点及面经整理

m0_52031708的博客 6605

oracle的char坑

char(10) 代表的含义是如果字段长度小于10的话,会自动补空格。 昨天遇到了这种情况,从一个表里边查询出了带空格的数据,和另一个表的字段值进行匹配的过程中(可想而知) 解决过程: 在网上漫天地查找截断空格的方法: substr(字段名,开始下标,控制截取的长度) 注意:控制截取的长度-开始下标就是长度 直接在数据库里边按backspace,气人的是每次提交之后都是还带有空格(真佩服

u013862444的博客 1209

R | 提取文件夹内栅格数据的最小值、最大值、标准差和平均值

各位同学好,我们长需要用长时间序列栅格数据的平均值做变量的时间变化分析,用代码能够帮助我们省下很多时间。

qq_48539301的博客 449

oracle char(10) char(13),Oracle的To_char()函数

To_char()函数上次传了个to_date()函数,这次是to_char()函数供大家参考。

weixin_39684052的博客 1395

AI Agent技能评测框架SkillsBench:从黑盒评估到白盒技能拆解

在人工智能领域,模型评估是衡量技术进展的核心环节。传统评测基准如GLUE、MMLU主要关注模型的通用认知能力,但实际工程应用中,AI Agent需要的是在复杂场景中协调多种能力的“职业技能”。SkillsBench创新性地将Agent能力进行原子化拆解,定义了理解规划、工具调用、推理决策、交互安全等技能维度,并通过领域专家构建的评测集确保生态效度。这一框架为Agent开发提供了精准的“度量衡”,使性能优化从经验驱动转向数据驱动,同时为不同模型和框架提供了公平比较的基础,推动了AI Agent生态从“野蛮生长

weixin_30530339的博客 389

Halcon 简单的形状匹配定位与区域跟随

【代码】Halcon简单的形状匹配定位与区域跟随。

唐大狗 2806

oracle数据库的常见数据类型

char 定长字符串类型 长度是固定不变的 GBK编码 默认长度是1 即一个字节 最大长度:2000个字节 char(10) 等价于char(10 byte) 如果存入的值不足10个字节,其他位也被占用 char(10 char) 长度为10个字符,即20个字节 优点: 查询效率较高 缺点: 占用空间较多 ...

weixin_34067102的博客 186

【实用运维脚本】Windows 批量 TCP 端口检测(tcping 一键巡检)

摘要:本文介绍一款高效的Windows批量TCP端口检测脚本,适配tcpingv0.39工具,实现多服务器一键巡检。脚本具有进度可视化、双日志输出、自动容错等优势,支持注释行过滤和UTF-8编码。 使用仅需三步: 1)下载tcping工具 2)编辑目标列表 3)运行脚本即可自动检测并生成带编号的检测报告。 该方案解决了手动检测效率低、易遗漏的问题,特别适合日常运维中的端口连通性检查,实测稳定可靠,开箱即用。

蕲士|D365 & 服务器运维,心有东坡,行稳致远。 802

Oracle数据库基础(二)

Oracle数据库基础(二)

dannideding的博客 1530

【Matlab】matlab代码实现迭代学习控制

该文介绍了在Matlab中实现迭代学习控制(ILC)的方法。ILC通过利用历史轨迹数据来优化重复任务的控制性能。文章提供了一个步进电机控制示例,包括:1)定义正弦轨迹;2)设置100次迭代和0.1学习率;3)建立二阶系统模型;4)执行ILC算法计算控制输入;5)绘制期望轨迹与实际输出的对比图。该示例展示了ILC的基本实现过程,并指出实际应用可能需要更复杂的设计。代码演示了误差计算、控制输入更新和结果可视化等关键步骤。

unber的博客 201

基于MATLAB的奇异谱分析(SSA)算法详解

本文详细介绍了基于MATLAB的奇异谱分析(SSA)算法。文章首先阐述了SSA的基本概念、历史发展及其与传统信号分析方法的对比优势,指出SSA作为一种非参数、非线性时间序列分析方法,特别适合处理非平稳信号。随后详细解析了SSA算法的核心原理与数学模型,包括轨迹矩阵构建、奇异值分解、分组与重构四个关键步骤。文章还提供了完整的MATLAB实现框架和代码解析,涵盖参数检查、轨迹矩阵构建、SVD分解、分组策略和重构过程。最后,通过信号分解、去噪和预测三个应用案例展示了SSA的实际效果。

qq_42212808的博客 168

Oracle数据类型介绍

Oracle数据类型介绍

心寒的博客 5973

基于STM32单片机智能循迹小车毕业设计

本文介绍了一种利用STM32F103C8T6单片机为控制核心,结合多种传感器以及PID算法实现循迹避障功能的智能小车。随着我国高科技水平的不断提高和工业自动化进程的不断推进,智能小车被广泛应用于各种玩具和其他产品的设计中,极大地丰富了人们的生活。本次设计利用反射式红外光电传感器探测路面黑线实现小车循迹,利用超声波测距传感器探测路径上的障碍,控制小车自动避障,整个系统具有自动循迹、自动避障、速度检测和无线遥控功能。其中,控制部分采用STM32F103C8T6单片机,STM32F103C8T6单片机是一

qq_48771816的博客 3974

Oracle字段类型char、varchar2、nvarchar2的区别与使用

1、和VARCHAR不同的是,VARCHAR2把空串等同于null处理,这也是为什么ORACLE推荐使用VARCHAR2类型的原因。存储大小是输入数据的实际长度加 2 个字节,用于反映存储的数据的长度。例如varchar2(3 char),可以存储3个字符(包括字母和汉字),如'啊啊啊'、'aaa'、'啊aa',与字节(byte)长度无关;与上面不同的是,是根据Unicode标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。固定长度,非 Unicode 字符数据,长度为 n 个字节。

xiying15270873284的博客 9481

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

详解Oracle数据库int、number类型和char、varchar、varchar2类型的区别

概述 简单汇总下oracle数据库int、number和char、varchar、varchar2的区别 1、oracle中int与number的区别 oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。int类型只能存储整数;number可以存储浮点数,也可以存储整数; number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全; number(8)存储总长度为8的整数; int相当于number(22),存储总长度为22的整数

淡定波的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

oracle中char、varchar和varchar2区别

1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节; 2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理; 3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。 注意: 在oracle中 varchar2的最大长...

u012374512的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Oracle中CHAR与VARCHAR2的区别

CHAR与VARCHAR2都是Oracle的数据存储格式。CHAR是定长的,VARCHAR2是变长。都可以存储字符串。      需要注意的是使用CHAR的时候。Select查询要注意定长的格式。查询字符串的长度要刚好。多了少了都不能查不到数据。例如字段A为CHAR(10)。存“abcdefg”,长度不满10。Oracle会用空格补满10位。你用"abcefg"作为查询字段时是查不出来的。这就是我...

rui_xiao的博客 1万+

Oracle:VARCHAR2(100)与VARCHAR2(100 CHAR)的差异导致的报错

记录一次因VARCHAR2(100)与VARCHAR2(100 CHAR)类型差异引起的抽数报错

qq_38294275的博客 1153

mysql数据库char类型长度_Mysql数据库Char和Varchar字段类型长度的选择比较

网上有很多关于char和varchar的相关比较,但是都历史悠久,这里转载一篇信息比较新的,个人认为对我的设计字段决定帮助很大。 现代数据库一般都支持CHAR与VARCHAR字符型字段类型,CHAR是用来保存定长字符,存储空间的大小为字段定义的长度,与实际字符长度无网上有很多关于char和varchar的相关比较,但是都历史悠久,这里转载一篇信息比较新的,个人认为对我的设计字段决定帮助很大。现代数...

weixin_42311046的博客 1753

Oracle字段number类型与varchar2类型

NUMBER(precision,scale) precision表示数字中的有效位;如果没有指定precision的话,Oracle将使用38作为精度。 如果scale大于零,表示数字精确到小数点右边的位数;scale默认设置为0;如果scale小于零,Oracle将把该数字取舍到小数点左边的指定位数。 Precision的取值范围为【1---38】;Scale的取值范围为【-84---127】。 NUMBER整数部分允许的长度为(precision- scale),无论scale是...

huangshulan的博客 4075

mysql char类型 比较大小_Mysql数据库Char和Varchar字段类型长度的选择比较

网上有很多关于char和varchar的相关比较,但是都历史悠久,这里转载一篇信息比较新的,个人认为对我的设计字段决定帮助很大。 现代数据库一般都支持CHAR与VARCHAR字符型字段类型,CHAR是用来保存定长字符,存储空间的大小为字段定义的长度,与实际字符长度无网上有很多关于char和varchar的相关比较,但是都历史悠久,这里转载一篇信息比较新的,个人认为对我的设计字段决定帮助很大。现代数...

weixin_42501892的博客 1032

Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用

这篇对oracle几种字符类型总结的比较好,收藏了。 一 varchar,varchar2,nvarchar,nvarchar2 四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节,都是非 Unicode 字符数据,可以定义的最大长度为4000字节。 nvarchar和nvarchar2的区别和上面一样,   与

javaloveiphone的专栏 6510

oracle mysql中的char,varchar,varchar2的区别

MySQL中 char是定长的,varchar是变长的。varchar2应该是varchar的升级,似乎只有ORACLE才有,这里不作讨论。 char定长存储,速度快,但是存在一定的空间浪费,适用于字段不是很大,对速度要求高的场合。速度快是因为其在物理上是按定长存储的,这样,就可以根据偏移址一次取出固定长度的字符。 varchar变长存储,所以效率不如char。varchar在存储时,在物理

leifuchild的专栏 4844

char,varchar,varchar2类型对空格的处理

在今天开发过程中,发现了一查询结果很怪异,一GOOGLE下才知道是Oracle对CHAR类型处理的问题,在oracle中对CHAR的处理是自动添加空格,比如char(8)存储'2007-11',则在后面自动添加空格,所以导致以下很多查询怪异问题(在表test中有字段month为char(8),存储着'2007-11'一条数据):         select * from test where

hanchuang213的博客 3641

Oracle字符类型详解:VARCHAR、VARCHAR2与CHAR的区别

在Oracle数据库中,VARCHAR、VARCHAR2和CHAR是三种常用的字符数据类型,它们在存储方式、长度限制和使用场景上有着显著区别。

chinalog的专栏 1836

达梦数据库查看表字段VARCHAR类型的长度单位是BYTE还是CHAR

达梦数据库查看表字段VARCHAR类型的长度单位是BYTE还是CHAR

Mrkill123的博客 6311
上一篇: javascript 字符串转换成日期类型(悲摧了,真的须如此吗?高手请指教。)
下一篇: Extjs 4 中,表单的回车事件
杠杠峰
博客等级 码龄18年 10粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值