国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql VARCHAR的最大長(zhǎng)度到底是多少

2024-07-24 12:49:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
以前一直都認(rèn)為有兩個(gè)字節(jié)來(lái)記錄長(zhǎng)度(長(zhǎng)度小也可以用一個(gè)字節(jié)記錄),所以這個(gè)問(wèn)題當(dāng)時(shí)覺(jué)得就挺無(wú)聊的不過(guò)后來(lái)群里有人給了解釋?zhuān)蝗徊虐l(fā)現(xiàn)原來(lái)事情不是這么簡(jiǎn)單

MYSQL COMPACT格式,每條記錄有一個(gè)字節(jié)來(lái)表示NULL字段分布,如果表中有字段允許為空,則最大只能定到65532,如果沒(méi)有字段允許為空,則那個(gè)字節(jié)可以節(jié)省,最大可以定義到65533,不知道是不是這個(gè)原因

于是上網(wǎng)看了些資料,又在本地做了些實(shí)驗(yàn),原來(lái)vachar的最大長(zhǎng)度真的是不定的(根據(jù)是否有非空字段來(lái)決定)
在本地做了下實(shí)驗(yàn),innodb+latin的環(huán)境

復(fù)制代碼 代碼如下:

-- success
drop table if exists test;
create table test(name varchar(65533) not null)engine=innodb DEFAULT CHARSET=latin1
-- too large
drop table if exists test;


create table test(name varchar(65533))engine=innodb DEFAULT CHARSET=latin1
對(duì)于第二種情況,允許空字段的時(shí)候是不能加到65533的長(zhǎng)度的,最大只能到65532,到底應(yīng)該是引文的那種說(shuō)法。

網(wǎng)上也有人做了類(lèi)似的實(shí)驗(yàn),參考http://stackoverflow.com/questions/8295131/best-practise-for-sql-varchar-column-length
復(fù)制代碼 代碼如下:

name varchar(100) not null will be 1 byte (length) + up to 100 chars (latin1)
name varchar(500) not null will be 2 bytes (length) + up to 500 chars (latin1)
name varchar(65533) not null will be 2 bytes (length) + up to 65533 chars (latin1)
name varchar(65532) will be 2 bytes (length) + up to 65532 chars (latin1) + 1 null byte

總結(jié)一下,原來(lái)mysql的vachar字段的類(lèi)型雖然最大長(zhǎng)度是65535,但是并不是能存這么多數(shù)據(jù),最大可以到65533(不允許非空字段的時(shí)候),當(dāng)允許非空字段的時(shí)候只能到65532。

以下是其它網(wǎng)友的補(bǔ)充說(shuō)明:

這不是一個(gè)固定的數(shù)字。本文簡(jiǎn)要說(shuō)明一下限制規(guī)則。

strlen 計(jì)算字符串長(zhǎng)度,一個(gè)中文當(dāng)2字符
mb_strlen根據(jù)它的字符編碼模式,統(tǒng)計(jì)字符quot

count計(jì)算數(shù)組中的元素?cái)?shù)目或?qū)ο笾械膶傩詡€(gè)數(shù)

復(fù)制代碼 代碼如下:

<?php
header('Content-Type:text/html;charset=UTF-8');
$string1="謝春業(yè)";//定義中文字符變量
$string2="xcy";//定義英文字符變量
//直接輸出看看他們的長(zhǎng)度
echo strlen($string1);
echo "</br>";
echo strlen($string2);
echo "</br>";
//用 php 多字節(jié)擴(kuò)展函數(shù) mb_strlen試試看
echo mb_strlen($string1,'utf8');
echo "</br>";
echo mb_strlen($string2,'utf8');
echo "</br>";
?>


輸出結(jié)果是:
9
3
3
3

1、限制規(guī)則
字段的限制在字段定義的時(shí)候有以下規(guī)則:
a) 存儲(chǔ)限制
varchar 字段是將實(shí)際內(nèi)容單獨(dú)存儲(chǔ)在聚簇索引之外,內(nèi)容開(kāi)頭用1到2個(gè)字節(jié)表示實(shí)際長(zhǎng)度(長(zhǎng)度超過(guò)255時(shí)需要2個(gè)字節(jié)),因此最大長(zhǎng)度不能超過(guò)65535。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黔西| 南木林县| 胶南市| 洪湖市| 高安市| 封开县| 新绛县| 郸城县| 仙居县| 信宜市| 辽中县| 永安市| 封丘县| 凉山| 保定市| 同江市| 克山县| 忻州市| 县级市| 乌鲁木齐市| 白河县| 化隆| 重庆市| 明水县| 定边县| 锡林浩特市| 花莲市| 黄石市| 凭祥市| 阳泉市| 三明市| 合肥市| 潮安县| 资讯 | 河池市| 大方县| 西林县| 咸丰县| 综艺| 屏山县| 星子县|