Study Area Facebook粉絲團http://www.facebook.com/sataiwan
0 會員 與 1 訪客 正在閱讀本文。
超出的會截掉,很多的 db 都是這樣的,也不會警告。
這樣看來,只要將欄位定義為UTF8, MySQL會自動增大欄位長度,存放所有字串, 即是說此時不會去理該欄位所定義的長度了, 只要不超過該Field type的最大限制就可以了, 比如: MySQL的varchar,最大允許255個字元,只要輸入的中文字不超過85(255除3),不用理定義該欄位的長度,即不會出現警告信息吧~
CREATE TABLE `test` ( `test` varchar(255) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- -- 列出以下資料庫的數據: `test`-- INSERT INTO `test` (`test`) VALUES ('123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345');INSERT INTO `test` (`test`) VALUES ('一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一二三四五');INSERT INTO `test` (`test`) VALUES ('1234567890');INSERT INTO `test` (`test`) VALUES ('一二三四五六七八九零');INSERT INTO `test` (`test`) VALUES ('1二3四5六7八9零');
SELECT test,length(test),CHAR_LENGTH(test) FROM `test`