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

mysql和oracle的一個漢字佔幾個字元

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

今天測試了下發現不對了


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

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


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


為什麼這是相同的?因為這不是漢字大笑

好了,現在知道原來mysqloracle一樣的,但是又看到一篇說mysqlvarcharoraclevarchar2是不一樣的,前者是用字元做單位的,後者是用位元組做單位的。對於

oracle11gvarchar2是用位元組做單位的在以前玩oracle時測試過,但是mysql就沒有測試過,好吧現在測試下。我先將欄位長度改小看下能不能給容下,測試結果確實是可以的,證明mysqlvarchar是用字元做單位的,這裡就不貼圖了,大家可以自己驗證下。

總結:oracle varchar2(10)  10個位元組3個漢字

            mysql  varchar(10) 10個字元10個漢字

所以現在可以將mysqlvarchar欄位減小1/3了,效能也能提高哦。

相關推薦

mysqloracle一個漢字字元

以前一直使用oracle11g,一個漢字佔3個位元組,所以在操作mysql時也一直這樣分配長度。 今天測試了下發現不對了 可以看到第一個的長度確實是15,但是第二個為什麼是5? 在網上找到資料:c

utf-8 中的一個漢字位元組

utf-8 中的一個漢字佔幾個位元組 佔 2 個位元組的:〇 佔 3 個位元組的:基本等同於 GBK,含 21000 多個漢字 佔 4 個位元組的:中日韓超大字符集裡面的漢字,有 5 萬多個 1 個 utf8 數字佔 1 個位元組 1 個 utf8 英文字母佔 1 個位元

一個漢字位元組

一個漢字佔幾個字元/位元組? 2個,還是3個字元呢? 其實一個漢字可能會佔2~4個字元,佔幾個字元取決於你採用的什麼編碼。漢字在GBK/GB2312編碼中佔2個位元組,在UTF-8/unicode中一般佔用3個位元組(或2~4位元組)。 暫時

ORACLE漢字位元組?

一直認為中文再oracle中也是佔用兩個字元(一個字元佔用一個位元組),寫pl/sql的時候報緩衝區溢位,被同事糾正,一個漢字不止佔用2個位元組,根據引數的不同,可能佔用多個(2~4個)。 可以用下面的sql: SELECT * FROM v$nls_par

關於Oracle一個漢字代表位元組的問題

在Oracle定義變數時,常有VARCHAR2 (3 Char)或者VARCHAR2 (10 Byte)的資料型別,那麼3char或者10Byte到底代表幾個漢字,幾個字元呢,上次外公司一同事討論這個問題,一下沒給解釋清楚,所以下來以後整理如下: 總結: 當NLS_CHAR

Java一個漢字位元組(詳解與原理)

1、先說重點: 不同的編碼格式佔位元組數是不同的,UTF-8編碼下一個中文所佔位元組也是不確定的,可能是2個、3個、4個位元組; 2、以下是原始碼: 1 @Test 2 public void test1() throws UnsupportedEncodingE

mysqloracle一個漢字字符

技術分享 AR == details 應該 gravity 為什麽 tail 計算 轉自:http://blog.csdn.net/u011575570/article/details/47414513 以前一直使用oracle11g,一個漢字占3個字節,所以在操作mysq

utf-8的中文是一個漢字位元組長度嗎?

英文字母:位元組數 : 1;編碼:GB2312位元組數 : 1;編碼:GBK位元組數 : 1;編碼:GB18030位元組數 : 1;編碼:ISO-8859-1位元組數 : 1;編碼:UTF-8位元組數 : 4;編碼:UTF-16位元組數 : 2;編碼:UTF-16BE位元組數 : 2;編碼:UTF-16LE中

JS判斷字串長度(英文1字元,中文漢字2字元

//計算字串長度(英文佔1個字元,中文漢字佔2個字元) 方法一: [javascript] view plain copy String.prototype.gblen = function() {         var len = 0;         

Java 一個數字、字母、漢字位元組

漢字字元 2位元組 英文字元 1位元組 中文標點 2位元組 英文標點 1位元組 中國字比較複雜,1位元組=8位,8位從0000 0000到1111 1111只能表示256個字元,2個位元組是2*8=16位,從0000 0000 0000 0000到1111 11

python通過一個語句分析常用函數概念

完全 1.4 優點 難解 實現 word 開篇 iter 執行 前言 過年也沒完全閑著,每天用一點點時間學點東西,本文為大家介紹幾個python操作的細節,包含all、any、for in等操作,以及介紹我解決問題的思路。 一、開篇 先從我看到的一個簡單的語句開始。 tex

mysqloracle查詢出的一條結果中的多欄位拼接

1,mysql concat('a','b','c')和concat_ws('a','b','c')的區別:前者如果有某個值為空,結果為空;後者如果有某個值為空,可以忽略這個控制 SELECT concat_ws('',FORE_TWO,THIRD_POSITION,FOURTH_POSIT

Oracle一個表中欄位更新到另一個表中

UPDATE  TEST_TABLE1 T1    SET  (T1.AA, T1.BB, T1.CC) =      

一個字元位元組

ASCII碼:   一個英文字母(不分大小寫)佔一個位元組的空間,一箇中文漢字佔兩個位元組的空間。一個二進位制數字序列,在計算機中作為一個數字單元,一般為8位二進位制數,換算為十進位制。最小值0,最大值255。如一個ASCII碼就是一個位元組。 UTF-8編碼:   一個英文字元等於一個位元

Java語言中一個字元位元組?

要區分清楚內碼(internal encoding)和外碼(external encoding)就好了。 內碼是程式內部使用的字元編碼,特別是某種語言實現其char或String型別在記憶體裡用的內部編碼; 外碼是程式與外部互動時外部使用的字元編碼。“外部”相對“內部”而言;不是char或Str

漢字位元組,字元一個位元組,不設定寬度限制文字的長度

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initia

java裡面一個字元位元組?

java的字元型別 char 佔用2個直接,因為他是Unicode編碼 Java簡單資料型別 簡單型別 大小 範圍/精度 float 4 位元組 32位IEEE 754單精度 double 8 位元組 64位IEEE 754雙精度 byte 1位元組 -128到127

擷取字串,漢字位元組,字母一個位元組

/*  * 頁面編碼必須為utf-8  */ function esub($str, $length = 0, $ext = "...") {      if ($length < 1) {           return $str;      }      //計

php中按位元組擷取字串方法,(漢字位元組,字母一個位元組,頁面編碼必須為utf-8)

function esub($str, $length = 0) { if($length < 1){ return $str; } //計算字串長度 $strlen = (strlen($str) + mb_str

java 中一個char包含字節

導致 sdn col 會有 2個 tar 防止 clas 記得 背景 ??char包含幾個字節可能記得在上學的時候書上寫的是2個字節,一直沒有深究,今天我們來探究一下到底一個char多少個字節? Char ??char在設計之初的時候被用來存儲字符,可是世界上有那麽多字符,