mysql和oracle的一個漢字占幾個字符
阿新 • • 發佈:2018-03-19
技術分享 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的一個漢字占幾個字符