具體還是要看版本的
4.0版本以下,varchar(100),指的是100位元組,如果存放utf8漢字時,只能存33個(每個漢字3位元組)
5.0版本以上,varchar(100),指的是100字元,無論存放的是數字、字母還是utf8漢字(每個漢字3位元組),都可以存放100個。
自己在資料庫中建個表測試下可以放多少個漢字。
新建表:
create
table
varchar_test (
`id`
int
(11)
not
null
,
`string`
varchar
(20)
) engine=innodb
default
character
set
=utf8collate=utf8_general_ci
插入表
insert
into
varchar_test (id, string)
values
(1,
'一二三四五六七**十'
);
insert
into
varchar_test (id, string)
values
(2,
'一二三四五六七**十一二三四五六七**十'
);
insert
into
varchar_test (id, string)
values
(3,
'12345678901234567890'
);
測試結果:
1:一二三四五六七**十
2:一二三四五六七**十一二三四五六七**十
3:12345678901234567890
如果插入字元超過21個,則報錯
insert
into
varchar_test (id, string)
values
(3,
'123456789012345678901'
);
[err] 1406 - data too long
for
column
'string'
at
row 1
可見mysql的varchar(n)可以儲存的中文字元數和英文本元數是一致的,都是n個字元
mysql資料庫varchar儲存漢字
具體還是要看版本的 4.0版本以下,varchar 100 指的是100位元組,如果存放utf8漢字時,只能存33個 每個漢字3位元組 5.0版本以上,varchar 100 指的是100字元,無論存放的是數字 字母還是utf8漢字 每個漢字3位元組 都可以存放100個。自己在資料庫中建個表測試下可...
MySQL資料庫varchar轉int型別的方法
mysql varchar轉int型別的方法 cast函式的使用 1 問題描述 獲取乙個表user中age的最大值。由於歷史原因,age是varchar型別的 2 問題解決 方案一 select max cast as unsigned integer from user 方案二 select fr...
資料庫關於varchar和nvarchar的區別
unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示 如果還為了這個糾結,就直接看看後面的解說,做決定吧。一般如果用到中文或者其它特殊字元,我就會使用n開頭的型別,否則的話直接使用var開頭的。sql server中的varc...