mysql資料庫varchar儲存漢字

2021-12-30 06:53:58 字數 928 閱讀 9922

具體還是要看版本的

4.0版本以下,varchar(100),指的是100位元組,如果存放utf8漢字時,只能存33個(每個漢字3位元組)

5.0版本以上,varchar(100),指的是100字元,無論存放的是數字、字母還是utf8漢字(每個漢字3位元組),都可以存放100個。

自己在資料庫中建個表測試下可以放多少個漢字。

示例:以5.0以上版本為例。

新建表:

createtablevarchar_test(

`id`int(11)notnull,

`string`varchar(20)

)engine=innodb

defaultcharacterset=utf8collate=utf8_general_ci

插入表insertintovarchar_test(id,string)

values(1,'一二三四五六七**十');

insertintovarchar_test(id,string)

values(2,'一二三四五六七**十一二三四五六七**十');

insertintovarchar_test(id,string)

values(3,'12345678901234567890');

測試結果:

1:一二三四五六七**十

2:一二三四五六七**十一二三四五六七**十

3:12345678901234567890

如果插入字元超過21個,則報錯

insertintovarchar_test(id,string)

values(3,'123456789012345678901');

[err]1406-datatoolongforcolumn'string'atrow1

可見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...