Mysql 中 varchar 比較 Oracle varchar2
MySQL和oracle做資料同步。其中表的一個欄位在mysql中設定為varchar(6),Oracle中為varchar2(6)
但mysql中能正常存放的資料同步到oracle中卻抱ORA-12899: value too large for column錯誤。
這是為什麼呢?
mysql中varchar(6)代表可以存放6個漢字,6個字母,或6個數字。
oracle中varchar2(6)代表可以中存放6個位元組。即oracle中varchar2的長度代表位元組數而不是字元數。
mysql中一個漢字佔三個位元組,Oracle中一個漢字佔兩個位元組。
雖然mysql varchar 和orache varchar2中欄位設定相同的長度,但oracle中卻存放不下。
1.1. Mysql中新建表tmysql
CREATE TABLE tmysql (
name varchar(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf
1.2.插入6個漢字
insert into t values('北京蒙迪艾爾');
1.3.可以成功插入,並查詢出結果
mysql> select name ,length(name) ,char_length(name)
from tmysql;
+--------------+--------------+-------------------+
| name | length(name) | char_length(name) |
+--------------+--------------+-------------------+
| 北京蒙迪艾爾 | 18 | 6 |
+--------------+--------------+-------------------+
1 row in set
2.1. Oracle中新建表toracle
Oracle:
SQL> create table toracle
2 (
3 NAME VARCHAR2(6)
4 );
Table created
2.3 在oracle的varchar2(6)中同樣插入6個漢字
SQL> insert into toracle values('北京蒙迪艾爾');
insert into toracle values('北京蒙迪艾爾')
ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 12, maximum: 6)
-- 在oracle中varchar2(6)中插入6個漢字失敗
SQL> select length('北京蒙迪艾爾') from dual;
LENGTH('北京蒙迪艾爾')
----------------------
6
SQL> insert into toracle values('蒙迪艾');
1 row inserted
SQL> select name ,length(name) from toracle;
NAME LENGTH(NAME)
------ ------------
蒙迪艾 3
SQL> insert into toracle values('蒙迪艾爾');
insert into toracle values('蒙迪艾爾')
ORA-12899: value too large for column "SCOTT"."TORACLE"."NAME" (actual: 8, maximum: 6)
如果想讓mysql varchar中存放的漢字可以在orale中varchar2中存放的下。
(因為mysql中一個漢字佔三個位元組,oracle中一個漢字佔兩個位元組)。
要存放4個漢字,mysql每1長度代表一個字元,
應該是 varchar(4) ;Oracle 每1長度代表一個位元組的話,應該是 varchar2(8),算下來 Oracle的長度應該保持為Mysql的2倍才對
參考:
相關推薦
Mysql 中 varchar 比較 Oracle varchar2
MySQL和oracle做資料同步。其中表的一個欄位在mysql中設定為varchar(6),Oracle中為varchar2(6)但mysql中能正常存放的資料同步到oracle中卻抱ORA-12899: value too large for column錯誤。 這是為什麼呢? mysql中varch
Mysql varchar VS Oracle varchar2
mysql和oracle做資料同步。其中表的一個欄位在mysql中設定為varchar(6),Oracle中為varchar2(6)但mysql中能正常存放的資料同步到oracle中卻抱ORA-12899: value too large for column錯誤。 這是為
mysql中varchar和char區別(思維導圖整理)
var 但是 系統 mysql 由於 varchar .html nbsp 了解 由於mysql一直是我的弱項(其實各方面我都是很弱的),所以最近在看msyql,正好看到varchar和char區別,所以整理一下,便於以後遺忘。 0.0圖片已經說明一切,但是系
mysql 中Varchar 與char的區別
計算機 一個 個數 arc eat 每一個 set span 方式 一、字符與字節與編碼關系 ASCII碼中,一個英文字母(不分大小寫)占一個字節的空間,一個中文漢字占兩個字節的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值0
MySql : varchar 和varchar 的區別 mysql int(10)的含義 MySql中varchar(10)和varchar(100)的區別==>>以及char的利弊
mysql int(10)的含義 int(M) M表示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與儲存大小或型別包含的值的範圍無關。 在 int(M) 中,M 的值跟 int(M) 所佔多少儲存空間並無任何關係。 int(1)
MySQL中varchar與char區別
MySQL中varchar最大長度是多少? 一. varchar儲存規則: 4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組) 5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8
int(11)最大長度是多少,MySQL中varchar最大長度是多少(轉)
int(11)最大長度是多少,MySQL中varchar最大長度是多少? int(11)最大長度是多少? 在SQL語句中int代表你要建立欄位的型別,int代表整型,11代表欄位的長度。 這個11代表顯示寬度,整數列的顯示寬度與mysql需要用多少個字元來顯
MySQL中VARCHAR(n)最多能存多少個漢字
首先要確定自己使用的MySQL版本是多少 (1)MySQL 4.0 版本以下,VARCHAR(n) 中的 n 指的是改欄位容量為 n 位元組。如果存放的漢字為UTF8編碼時(utf8編碼每個漢字佔3位元組),則只能存16個漢字。 (2)MySQL 5.0 版本以上,VARCH
mysql中varchar(N)中的N代表什麼
據說是面試題中很經典的一道,在這裡做一個實驗說明一下。 CREATE TABLE `wzy` ( `ColUTF` varchar(5) CHARACTER SET utf8 DEFAULT NULL, `ColGBK` varchar(5) CHARACTER S
MySql 中 varchar 和varchar 的區別
一般初學會認為,二者佔用的空間是一樣的。比如說我儲存5個char,二者都是實際佔用了5個char了【勘誤:varchar在實際儲存的時候會多一個byte用來存放長度】。 但是深入一下,設計資料庫的時候,二者一樣嗎?答案是否定的【至少varchar型別需要在資料之前利用一個或
mysql中datetime比較大小
select sum(studychj) as tofflinejz from afterline where chec
MySQL中varchar欄位值包含空格查詢問題解決辦法
前提條件:mysql提供了char和varchar兩種欄位型別,但若查詢條件where中包含char或varchar的限制條件,那麼會忽略char或varchar欄位記錄中末尾的空格字元。 原因:mysql中字串比較的時候使用的是PADSPACE校對規則,會忽略字元欄位最後的空格。 解決方法如下,例如查詢
Mysql中varchar型別的貓膩!
### varchar的儲存規則 4.0版本以下,varchar(20),指的是20位元組,如果存放UTF8漢字時,只能存6個(每個漢字3位元組)。 5.0版本以上,varchar(20),指的是20字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放20個,最大大小是65532位元組
SQL那些事兒(十三)--Oracle中varchar與varchar2區別
部落格統計 [removed]var cnzz_protocol = (("https:" == [removed].protocol) ? " https://" : " http://");[removed](unescape("[removed][removed]")
Oracle中varchar與varchar2
CHAR、VARCHAR、VARCHAR2區別: 1.CHAR的長度是固定的,而VARCHAR2的長度是可以變化的, 比如,儲存字串“abc",對於CHAR (20),表示你儲存的字元將佔20個位元組(包括17個空字元),而同樣的VARCHAR2 (20)則只佔用3
mysql的varchar(20)和oracle的varchar2(20)有什麼不同?
這裡講一下編碼,涵蓋內容包括:gbk、utf8編碼,漢字,資料庫,為什麼會出現亂碼。 Mysql庫,character為utf_8 建表test: create table test(a varc
mysql中char,varchar與text類型的區別和選用
數據庫服務器 填充 處理 sdn ext 支持 內容 總結 ace 關於char,varchar與text平時沒有太在意,一般來說,可能現在大家都是用varchar。但是當要存儲的內容比較大時,究竟是選擇varchar還是text呢?不知道。。。。。。 text 、 cha
oracle中與mysql中的命令 show databases, show tables, desc table類似的命令集
copyright 星期六 time 語句 什麽 ora cte 一個 select 1 怎樣執行一個sql腳本文件,這個腳本文件寫了一系列的sql語句集,比如sql.sql 放在D:\MyEclipse 8.6\Workspaces\OASystem\WebRoot\sq
【坑】 MySQL中,字符串和數值的比較
【坑】 mysql中 字符串和數值的比較 官方文檔:https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html原文:Comparison operations result in a value of 1 (TRUE), 0 (F
在Oracle、MySQL中執行sql指令碼生成hive建表語句
python3指令碼: #mysql for i in range(len(table_name)): sql1 = """SELECT CONCAT('create table ','%s','(') UNION ALL SELECT CONCAT(