char和varchar2的异同点

前言

最近备考时刚好遇到这个知识点,觉得char和varchar2的不同点可以从评价算法的三个标准(空间复杂度,时间复杂度,稳定性)来区分,就mark一下。

相同点

    char和varchar2都是用来存储字符的。

不同点

  1. 内存消耗

    char是固定长度字符型数据,长度以字节为单位,最小长度和默认长度都为1,最大长度为2000。
    varchar2是长度变化的字符型数据,最小长度为1,最大长度为4000。
    varchar2的长度取决于存储的字符串长度,char是固定长度,多出部分用null填充。
    varchar2比char更节省空间。
  2. 效率
    char的效率比varchar2的效率稍高(以空间换时间)
  3. 稳定性
    如果一个varchar2列经常被修改,而且每次被修改的数据的长度不同,会引起“行迁移”现象,这是数据库
    设计时要尽量避免的,在这种情况下用char代替varchar2会更好一点。

原文地址:https://blog.51cto.com/13646338/2449864

时间: 2024-10-05 22:24:04

char和varchar2的异同点的相关文章

char varchar varchar2 的区别 (转)

char varchar varchar2 的区别       http://blog.csdn.net/honglei_zh/article/details/7172538区别:1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储. 2.CHAR的效率比VARCH

TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT选择 和 char varchar varchar2 的区别

TEXT.TINYTEXT.MEDIUMTEXT.LONGTEXT选择: 储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 - 1) 个字符. TEXT 最大长度是 65535 (2^16 - 1) 个字符. MEDIUMTEXT 最大长度是 16777215 (2^24 - 1) 个字符. LONGTEXT 最大长度是 4294967295 (2^32 - 1) 个字符 char varchar varchar2 的区别: 区别: 1.CHAR的长度是固定的,而VAR

ORACLE CHAR和VARCHAR2类型

今天接触到一个比较有意思的问题,常见到极易忽略,但又不经意间掉坑又不容易出来. 创建表: CREATE TABLE TEMP_DECODE ( BORROW_TYPE CHAR(1), BORROW_TYPE1 CHAR(2), BORROW_TYPE2 VARCHAR2(10), BORROW_TYPE3 INT ) 执行SQL如下: SELECT DECODE(BORROW_TYPE,'7','ABC','HELLO'), DECODE(BORROW_TYPE1,'7','ABC','HEL

CHAR varchar varchar2 nvarchar2

CHAR的长度是固定的,而VARCHAR2的长度是可以变化的 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储. CHAR的效率比VARCHAR2的效率稍高. 目前VARCHAR是VARCHAR2的同义词.工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利.Oracle自

数据库中,char 与 varchar2 的区别

区别1: char 是定长的字符串 varchar2 是变长的字符串 区别2: name char(10)   zhangsan__ 如果实际长度不足10,使用空格补齐   name varchar2(10) zhangsan 存储占用的字节和实际字节长度一致,都是8 备注: varchar2好处在于能够节省存储空间,char的好处是效率高 (性别可用char)

MyBatis对Oracle的CHAR和VARCHAR2的处理

今天发现一个非常奇怪的现象,同样的SQL语句,在PL/SQL中能查询到结果,放到MyBatis下怎么也查不出东西.后来仔细研究,发现如下问题: 1.如果数据库中定义的字段为CHAR(20),而传入的参数只有18位,在PL/SQL中会该工具应该会自动的去除空格或者添加空格以便进行匹配: 2.但是在MyBatis中,没有这样的功能,使用=#{paramName}根本查询不到结果. 3.所以解决方式是:使用like '${paramName}%'来处理或者把对应的数据字段更改为VARCHAR2类型.

oracle之VARCHAR2(50 CHAR) 和VARCHAR2(50) 区别?

首先要明白的是:根据字符集不同,varchar2(50)这样在gbk可存25个汉字,utf8可存16个汉字 这里的50相当于50BYTE,是按字节计数,50CHAR是按字符计数. 对于多字节字符(如汉字),varchar2(50)仅能存储25个汉字,而varchar2(50char)能存储50个汉字. 原文地址:https://www.cnblogs.com/fpcbk/p/11938671.html

Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用(转载)

一 varchar,varchar2,nvarchar,nvarchar2 四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节,都是非 Unicode 字符数据,可以定义的最大长度为4000字节. nvarchar和nvarchar2的区别和上面一样,   与上面区别在于是根据Unicode   标准所进行的定义的类型(长度定义的是字符数,而不是字节数),通常用于支持多国语言类似系统的定义,可以定义的最大长度为400

oracle中varchar、varchar2、char和nvarchar的区别

1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节: char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字. char适用于长度比较固定的,一般不含中文的情况 2.varchar/varchar2 varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节. varc