Oracle字段类型踩坑

用varchar 不许用char

1、场景描述

通过Postman跑一个SpringCloudAlibaba中的一个子服务,debug跟进去看一下,已经接收到参数值(图1);再查看控制台输出的sql(图2),复制控制台的sql到数据库执行是有数据的(图3)。

2、问题排查

①已经确认数据库连接没有问题;

②通常情况下数据有空格,准确查询是查不到的;

③从数据下手,发现光标位置前有空格,准确查询还能查到解释不通

3、字段类型分析

oracle提供了五种字符数据类型:char、nchar、varchar、varchar2、nvarchar2。

       char:

使用数据库字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,自动补足空格 。指定长度时,默认长度的计量单位由NLS_LENGTH_SEMANTICS(默认为字节byte)参数决定,但是我们可以手动指定为char或者byte。oracle建议使用NLS_LENGTH_SEMANTICS来指定计量单位,可以提高效率。char类型的最大存储长度为2000个字节,在plsql中,最大存储长度可以达到32767个字节。使用char时, 可以不指定最大长度,此时最大长度为1.

       nchar:

使用国家字符集来存储数据,长度固定,如果 存储的数据没有达到指定长度,数据库自动补足空格 。指定长度时, 采用char为计量单位 ,不可以手动指定其他单位。最大存储长度为2000个字节,在plsql中,其最大存储长度可以达到32767个字节。使用nchar时,可以不指定最大长度,此时最大长度为1. 

       varchar2:

使用数据库字符集存储数据, 长度可变,如果存储数据没有达到指定长度,不自动补足空格 。可使用char,byte为计量单位,默认受参数NLS_LENGTH_SEMANTICS的影响。最大存储长度为4000个字节,在plsql中,存储长度可达32767个字节。 必须指定最大长度,长度最小值为1 . 

       nvarchar2:

使用国家字符集来存储数据,长度可变,如果存储的数据没有达到指定长度,不自动补足空格。指定长度时, 采用char为计量单位 ,不可以手动指定其他单位。最大存储长度为4000个字节,在plsql中,其最大存储长度可以达到32767个字节。必须指定最大长度,长度最小值为1.

  varchar:oracle没有实现该数据类型,varchar与varchar2完全一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值