1. 程式人生 > >mysql varchar 的最大長度

mysql varchar 的最大長度

mycolumn varchar(M),這裡的M是字元個數還是位元組個數,M的最大是多少?

首先,這個官方文件截圖,回答了所有問題


下面,中文解釋下

先說結論:
1. M 是字元的個數
2. M 的最大值 取決於 行位元組數(這是個常量值,即65535)以及 建表時的charset

詳細是這樣的:
mysql中,任何一個表中,行位元組數(即,所有column位元組長度的和)必須 <=65535;
M的最大值,就是 (65535-prefixlength)/chaset中每個字元的位元組數;
prefixlength的長度,會變的,取決於 我們存入的字元的個數(<=255時,prefixlength=1; >255時,prefixlength=2);
不過,既然我們在說 M的最大值,我們就認為存入的字元個數肯定>255,所以,prefixlength總是==2

所以,M的長度就是:(65535-2)/chaset中每個字元的位元組數

例如:
gbk時,每個字元 包含2個位元組,所以,charset='gbk'時,varchar的最大長度是
(65535-2)/2=32766.5,即,varchar最大長度是 32766

drop table if exists t_32766;
-- 失敗,因為長度 32767 超了
create table t_32766(v varchar(32767) not null default '') engine=InnoDB charset='gbk';
-- 成功
create table t_32766(v varchar(32766) not null default '') engine=InnoDB charset='gbk';

utf8時,每個字元 包含3個位元組,所以,charset='utf8'時,varchar的最大長度是

(65535-2)/3=21844.33333333,即,varchar最大長度是 21844

drop table if exists t_21844;
-- 失敗,因為長度 21845 超了
create table t_21844(v varchar(21845) not null default '') engine=InnoDB charset='utf8';
-- 成功
create table t_21844(v varchar(21844) not null default '') engine=InnoDB charset='utf8';

另外:

1. utf8儲存時,可以用1到6個位元組來儲存的。即a, b, c用一個位元組儲存;中文3個位元組;還有些特殊的是6個位元組,不過,mysql總是用3個位元組(估計是因為3位元組以上的utf8用的很少把。猜的)

2. 我的mysql版本是:MySQL Community Server (GPL) 5.6.23

相關推薦

int(11)長度是多少,MySQLvarchar長度是多少(轉)

int(11)最大長度是多少,MySQL中varchar最大長度是多少?   int(11)最大長度是多少?   在SQL語句中int代表你要建立欄位的型別,int代表整型,11代表欄位的長度。   這個11代表顯示寬度,整數列的顯示寬度與mysql需要用多少個字元來顯

mysql varchar長度

mycolumn varchar(M),這裡的M是字元個數還是位元組個數,M的最大是多少? 首先,這個官方文件截圖,回答了所有問題 下面,中文解釋下 先說結論: 1. M 是字元的個數 2. M 的最大值 取決於 行位元組數(這是個常量值,即65535)以及 建表時的ch

MysqlVARCHAR欄位長度到底是多少

如果某一項中設定的是varchar(50) mysql varchar(50) 不管中文 還是英文 都是存50個的 varchar(n),n表示什麼? MySQL5.0.3之前varchar(n)這裡的n表示位元組數 MySQL5.0.3之後varcha

Mysql 裡CHAR和VARCHAR長度及一些注意事項

(未完未完全驗證,有空再驗證) 先寫出結論: Mysql 5中 非空CHAR的最大總長度是255【位元組】;非空VARCHAR的最大總長度是65533【位元組】。 可空CHAR的最大總長度是254【位元組】;可空VARCHAR的最大總長度是65532【位元組】。

MySQL TEXT數據類型的長度

www hang 內容 就會 最大 imu have chang 類型 TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB

mysql字符集選擇和所能儲存的漢字的長度

一般我們的字符集是選擇utf-8. 4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組) 5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大

MySQL的text型別的長度

有個欄位是text型別,竟然67kb的內容都儲存不了,說是 Data too long  查看了一下,原來是這樣的:  TINYTEXT 256 bytes   TEXT 65,53

mysql的group_concat函式設定長度

mysql的group_concat函式,預設最大長度是1024 查詢sql: show variables like 'group_concat_max_len';   設定方式: 修改配置檔案my.ini: 在[mysqld]下新增配置:group_concat_m

tcp,udp報文長度

操作 miss 單元 格式 如果 mission mis src size   tcp,udp報文最大長度是怎麽樣的呢? 先來看看各個報文格式: ip報文 tcp報文 udp報文 ip和udp都有16位的長度字段,所以ip和udp報文的最大負載長度應該為2^16,64

input長度限制問題

限制 input tex pre length spa 鍵盤 max logs <input type="text" maxlength="5" /> //可以 <input type="number" maxlength="5" />

求兩個字符串的公共子串的長度

max clu name ++ algorithm 字符串 har ret namespace 1 #include <iostream> 2 #include <string.h> 3 #include <algorithm>

646. Maximum Length of Pair Chain 對鏈長度

fin eve select solution www elf stc amp ati You are given n pairs of numbers. In every pair, the first number is always smaller than the

11572 - Unique Snowflakes(貪心,兩指針滑動保存子段長度

fort ould inf inpu 問題 ica 兩指針 rst std Emily the entrepreneur has a cool business idea: packaging and selling snow?akes. She has devised

代碼行長度宜控制在 70 至 80 個字符以內

get 指針 out dat文件 con long could not 文件頭 std 代碼行最大長度宜控制在 70 至 80 個字符以內。代碼行不要過長,否 則眼睛看不過來,也不便於打印。 1 #include <iostream> 2 #inclu

MYSQL 檢視連線數和修改連線數

MySQL檢視最大連線數和修改最大連線數 1、檢視最大連線數show variables like '%max_connections%';2、修改最大連線數set GLOBAL max_connections = 200;   以下的文章主要是向大家介紹的是MySQL最大連線數的修改,我們大家

mysql查詢連線數及鎖

1、檢視最大連線數 show variables like '%max_connections%'; 2、修改最大連線數 set GLOBAL max_connections = 200; 3.root 檢視所有使用者當前連線 -- show processlist;只列出

MySQL檢視併發連線數

MySQL檢視最大併發連線數 MySQL效能相關 最大併發連線數檢視 :show variables like ‘%max_connections%’; 重新設定最大併發連線數:set global max_connections=1000 修改/etc/my.cn

字串長度限制ORA 01489

                字串最大長度限制ORA-014894月 8, 2008 – 1:30 下午我們知道varchar2的最大長度是4000,當處理一些大長度的欄位時4000有的時候也是不夠的。這個4000是單個欄位的長度,那麼在儲存的時候按照4000來儲存,在操作的時候在把字串合併到一起不就可以得

程式設計師面試100題之一 對稱字串的長度

                題目:輸入一個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串“google”,由於該字串裡最長的對稱子字串是“goog”,因此輸出4。分析:可能很多人都寫過判斷一個字串是不是對稱的函式,這個題目可以看成是該函式的加強版。要判斷一個字串是不是對稱的,不是一件很難的事情。我

[LeetCode] Maximum Length of Pair Chain 鏈對的長度

You are given n pairs of numbers. In every pair, the first number is always smaller than the second number. Now, we define a pair (c, d) can follow anot