当前位置: 首页 > MySQL数据库

mysql有没有varchar2

时间:2026-01-26 14:20:41

mysql没有varchar2,只有varchar。VARCHAR代表可变长度的字符串,其长度可以达到65,535个字符; MySQL将VARCHAR值作为1字节或2字节长度前缀加上实际数据。 VARCHAR2是oracle的类型,代表可变长度的字符串,可以存储1到4000字节的值,这意味着对于单字节字符集,最多可以在VARCHAR2列中存储4000个字符。

mysql没有varchar2,只有varchar,oracle有varchar2,代表字节长度,能容纳多少个汉字和数据库的字符集有关。

mysql的varchar类型

VARCHAR是可变长度的字符串,其长度可以达到65,535个字符。 MySQL将VARCHAR值作为1字节或2字节长度前缀加上实际数据。

长度前缀指定值的字节数。 如果列需要少于255个字节,则长度前缀为1个字节。 如果列需要超过255个字节,长度前缀是两个长度字节。

但是,最大长度受到最大行大小(65,535字节)和所使用的字符集的限制。 这意味着所有列的总长度应该小于65,535字节。

下面我们来看一个例子。

创建一个新的表,它有两列s1和s2,长度分别为32765(长度前缀为+2)和32766(+2)。注意,32765 + 2 + 32766 + 2 = 65535,这是最大行大小。

USEtestdb;CREATETABLEIFNOTEXISTSvarchar_test(s1VARCHAR(32765)NOTNULL,s2VARCHAR(32766)NOTNULL)CHARACTERSET'latin1'COLLATELATIN1_DANISH_CI;

该语句成功创建了表。 但是,如果我们将s1列的长度增加1。

USEtestdb;CREATETABLEIFNOTEXISTSvarchar_test_2(s1VARCHAR(32766)NOTNULL,--errors2VARCHAR(32766)NOTNULL)CHARACTERSET'latin1'COLLATELATIN1_DANISH_CI;

MySQL将发出错误消息:

ErrorCode:1118.Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Thisincludesstorageoverhead,checkthemanual.YouhavetochangesomecolumnstoTEXTorBLOBs0.000sec

如上所示,行长度太大,所以创建语句失败。

如果插入长度大于VARCHAR列长度的字符串,MySQL将发出错误。 请考虑以下示例:

USEtestdb;CREATETABLEitems(idINTPRIMARYKEYAUTO_INCREMENT,titleVARCHAR(3));INSERTINTOitems(title)VALUES('ABCD');

在这个例子中,MySQL发出以下错误消息:

1406-Datatoolongforcolumn'title'atrow1

oracle的varchar2类型

要存储可变长度的字符串,可以使用Oracle VARCHAR2数据类型。 VARCHAR2列可以存储1到4000字节的值。 这意味着对于单字节字符集,最多可以在VARCHAR2列中存储4000个字符。

当使用VARCHAR2列创建表时,必须指定最大字符串长度(以字节为单位):

VARCHAR2(max_sizeBYTE)

或以字符 -

VARCHAR2(max_sizeCHAR)

默认情况下,如果没有在max_size之后显式指定BYTE或CHAR,则Oracle使用BYTE。 换句话说,VARCHAR2(N)列最多可以容纳N个字节的字符。

如果存储大小超过VARCHAR2列最大长度的字符串,则Oracle发出错误。

例如,如果定义最大长度为20的VARCHAR2列,则在单字节字符集中最多可以存储20个字符。 如果存储了21个或更多字符,则Oracle返回错误。

另外,如果在VARCHAR2(20)列中存储10个字符,则Oracle仅使用10个字节进行存储,而不是20个字节。 因此,使用VARCHAR2数据类型可以帮助您节省表使用的空间。

比较VARCHAR2值时,Oracle使用非填充比较语义。

VARCHAR2最大长度

从Oracle 12c开始,可以为VARCHAR2数据类型最大长度为:32767。 Oracle使用MAX_STRING_SIZE参数来控制最大长度。 如果MAX_STRING_SIZE是STANDARD,则VARCHAR2的最大大小是4000字节。 如果MAX_STRING_SIZE为EXTENDED,则VARCHAR2的大小限制为32767。

要获取MAX_STRING_SIZE参数的值,请使用以下查询:

SELECTname,valueFROMv$parameterWHEREname='max_string_size';

执行上面查询语句,得到以下结果 -

SHOWPARAMETERmax_string_size;


上一篇:Mysql使用on update current_timestamp问题怎么解决
下一篇:MYSQL数据库管理之权限管理怎么配置
mysql varchar2
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素