你或許不知道的varchar2型別的定義
通常,我們定義一個varchar2欄位時,使用的是如下定義:
Cola Varchar2(10);
他表示cola可以儲存最多10個英文字元,或者5個zhs16gbk中文字元,或者3個utf8的中文字元。
上面的區別對使用英文的國家其實不是問題,但是很不幸,我們使用的是中文~
我們平常遇到的最大問題就是做跨字符集導數時,源端使用16gbk,而目標端使用utf8,而且原表欄位長度又剛好滿足最長的長度需求。這樣導數時就會有欄位超長的問題,不斷的報錯。
平常的處理方法都是先導表結構,修改所有的字元型別欄位(char, varchar2)為原長度的4/3以上。
其實 varchar2 還有另一種定義方法:
Colb varchar2(10 char);
他表示的意義是colb可以儲存最多10個任意字元。看下面測試:
SQL> create table a (a varchar2(2 char));
Table created
Executed in 0.016 seconds
SQL> insert into a values ('哈哈');
1 row inserted
Executed in 0 seconds
SQL> insert into a values ('haha');
insert into a values ('haha')
ORA-12899: value too large for column "AUTODATA"."A"."A" (actual: 4, maximum: 2)
SQL> commit;
Commit complete
Executed in 0 seconds
SQL> create table b(b varchar2(2));
Table created
Executed in 0.015 seconds
SQL> insert into b values ('哈哈');
insert into b values ('哈哈')
ORA-12899: value too large for column "AUTODATA"."B"."B" (actual: 4, maximum: 2) |
如果我們在開發階段就要求開發人員以第二種方式定義varchar2,跨字符集的資料遷移就不需要那麼糾結了~~ 而且還不會受限於varchar2最多隻能儲存2000個漢字~~。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-736526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你或許不知道Vue的這些小技巧Vue
- 型別—-《你不知道的js》型別JS
- 聯機重定義修改欄位型別(NVARCHAR2->VARCHAR2)型別
- 哪些你知道或不知道的css,在這裡或許都齊全CSS
- 定義物料型別的屬性型別
- 你不知道的js讀後感-型別JS型別
- 你也許不知道的Vuejs - 自定義路由實現VueJS路由
- Oracle的資料型別:char/varchar2Oracle資料型別
- XML中的DTD文件型別定義XML型別
- 巨集定義和列舉型別的區別型別
- 你不知道的JavaScript--Item4 基本型別和基本包裝型別(引用型別)JavaScript型別
- DTD文件型別定義型別
- 你不知道的js型別轉化和原型鏈JS型別原型
- 你所不知道的 Typescript 與 Redux 型別優化TypeScriptRedux型別優化
- 你所不知道的Typescript與Redux型別優化TypeScriptRedux型別優化
- 定義SQL*PLUS型別的可執行SQL型別
- 定義一個單例型別的Qml單例型別
- javascript 從定義到執行,你不知道的那些事JavaScript
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar型別的區別與使用Oracle型別
- 你也許不知道的Vuejs – 定製開發專案模板VueJS
- 你也許不知道的Vuejs - 定製開發專案模板VueJS
- 預定義錯誤型別型別
- 也許你不知道的npm-scriptsNPM
- 你也許不知道的Vuejs - 前言VueJS
- long型別轉換成varchar2型別
- oracle如何變更varchar2型別的列為clobOracle型別
- 【基礎】Oracle CHAR,VARCHAR,VARCHAR2,nvarchar型別的區別與使用Oracle型別
- Golang通脈之型別定義Golang型別
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- 定義多維的點模板類,任意資料型別資料型別
- 如何在Typescript中定義Promise的返回值型別TypeScriptPromise型別
- 建構函式定義的隱式型別轉換函式型別
- Oracle預定義的21個系統異常型別Oracle型別
- 為什麼值型別不允許顯式定義無參建構函式型別函式
- 你也許不知道的Vuejs - 狀態管理VueJS
- 或許你還不知道:到底該如何學習一門新技術?
- golang基礎語法,定義函式型別 為已存在的資料型別起別名Golang函式資料型別