mysql有没有varchar2
今天小编给大家分享一下mysql有没有varchar2的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
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有没有varchar2”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。