1. 程式人生 > >mysql和oracle的一個漢字占幾個字符

mysql和oracle的一個漢字占幾個字符

技術分享 AR == details 應該 gravity 為什麽 tail 計算

轉自:http://blog.csdn.net/u011575570/article/details/47414513

以前一直使用oracle11g,一個漢字占3個字節,所以在操作mysql時也一直這樣分配長度。

今天測試了下發現不對了

技術分享圖片技術分享圖片

可以看到第一個的長度確實是15,但是第二個為什麽是5?

在網上找到資料:char_length計算的是字符長度,而length計算的是字節長度,剛好我使用的是utf8,一個漢字占3個字節,占一個字符。

技術分享圖片

那好了,應該是對的上了,可是好奇心我就試了下

技術分享圖片技術分享圖片

為什麽這是相同的?因為這不是漢字技術分享圖片

好了,現在知道原來mysql和oracle一樣的,但是又看到一篇說mysql的varchar與oracle的varchar2是不一樣的,前者是用字符做單位的,後者是用字節做單位的。對於oracle11g的varchar2是用字節做單位的在以前玩oracle時測試過,但是mysql就沒有測試過,好吧現在測試下。我先將字段長度改小看下能不能給容下,測試結果確實是可以的,證明mysql的varchar是用字符做單位的,這裏就不貼圖了,大家可以自己驗證下。

總結:oracle 中varchar2(10) 既10個字節3個漢字

mysql 中varchar(10) 既10個字符10個漢字

所以現在可以將mysql的varchar字段減小1/3了,性能也能提高哦。

mysql和oracle的一個漢字占幾個字符