char与varchar2 随笔整理

今天同事实现一个查询功能,不出结果,帮其查看后,发现是由于数据库字段类型定义问题,随笔记录下,望对大家有帮助。

 1.char:
 固定长度的字符数据类型。若数据库表定义了个char类型的字段,则该字段的长度为定义的固定长度
 如:表tab定义字段tab_char类型为char(6),若写入值不够6个字节,则以空格补齐。
 2.varchar2:

非固定长度的字符数据类型。若数据库表定义了个varchar2类型的字段,则该字段的长度是可变的。
 如:表tab定义字段tab_varchar类型为varchar2(6),若写入值不够6个字节,则不会以空格补齐,保存的为实际值。
 
 情景描述:
 
 CREATE TABLE TAB1 (
 
  ID            NUMBER(5) not null,
  TAB_CHAR      CHAR(6),
  TAB_VARCHAR   VARCHAR2(6)
 )
 insert into TAB1(ID,TAB_CHAR,TAB_VARCHAR) values(1,2,2);
  insert into TAB1(ID,TAB_CHAR,TAB_VARCHAR) values(2,3,3);
 eg:
 SELECT * FROM TAB1 WHERE TAB_CHAR =2;
 结果:空
 
 SELECT * FROM TAB1 WHERE TAB_VARCHAR =2;
 结果:1条数据(查询出TAB_VARCHAR值为2的记录)
 
 SELECT * FROM TAB1 WHERE TAB_CHAR ='2';
 结果:1条数据(查询出TAB_CHAR值为2的记录)
 
 SELECT * FROM TAB1 WHERE TAB_VARCHAR ='2';
 结果:1条数据(查询出TAB_VARCHAR值为2的记录)
 
 SELECT * FROM TAB1 WHERE trim(TAB_CHAR) =2;
 结果:1条数据(查询出TAB_CHAR值为2的记录)
 
 SELECT * FROM TAB1 WHERE trim(TAB_VARCHAR) =2;
 结果:1条数据(查询出TAB_VARCHAR值为2的记录)
 
 SELECT * FROM TAB1 WHERE trim(TAB_CHAR) ='2';
 结果:1条数据(查询出TAB_CHAR值为2的记录)
 
 SELECT * FROM TAB1 WHERE trim(TAB_VARCHAR) ='2';
 结果:1条数据(查询出TAB_VARCHAR值为2的记录)
 
 注;若在设计数据库字段类型时,若业务不需要固定长度,建议定义成varchar2类型较好。

 

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

 走的太快了,停一停,让灵魂跟上脚步。
          在物欲时代,消费占据了感官,也吞噬了个体生活。
******************* 我是阿木 *******************
----------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值