oracle小知識點1--varchar2的長度

selectshen發表於2015-06-03
(1)varchar2最大的長度是4000位元組
(2)一個漢字和一個英文字母都是一個字元,但在varchar2中佔的位元組數是不同的,可以透過lengthb()函式檢視
(3)varchar2預設定義的是位元組,例如varchar(10)指的是長度最大為10位元組的變長字串
(4)varchar2能存多少漢字跟NLS_CHARACTERSET的型別有關,因為不同的字符集中一個漢字佔的位元組數是不同的
(5)varchar2也可以定義為字元長度,就是在長度後加char,例如varchar(10 char),這樣就可以存10個字元
(6)nvarchar2中預設定義的是字元長度,而且英文和中文的長度佔的位元組數是一樣的.

--建立測試表
SQL> create table test_varchar(a varchar2(10),b nvarchar2(10),c varchar2(10 char)

表已建立。

--查詢資料庫字符集
SQL> select * from v$nls_parameters
  2  where parameter like '%CHARACTERSET%';

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_CHARACTERSET
ZHS16GBK

NLS_NCHAR_CHARACTERSET
AL16UTF16

--以下是測試
SQL> insert into test_varchar(a)
  2  select '1234567890' from dual;

已建立 1 行。

SQL> insert into test_varchar(a)
  2  select '小蘋果' from dual;

已建立 1 行。

SQL> insert into test_varchar(a)
  2  select '小小蘋果' from dual;

已建立 1 行。

SQL> insert into test_varchar(a)
  2  select '小蘋果小蘋果' from dual;
select '小蘋果小蘋果' from dual
       *
第 2 行出現錯誤:
ORA-12899: 列 "SYSTEM"."TEST_VARCHAR"."A" 的值太大 (實際值: 12, 最大值: 10)


SQL> insert into test_varchar(b)
  2  select '1234567890' from dual;

已建立 1 行。

SQL> insert into test_varchar(b)
  2  select '小小蘋果小小蘋果' from dual;

已建立 1 行。

SQL> insert into test_varchar(c)
  2  select '小小蘋果小小蘋果' from dual;

已建立 1 行。

SQL> commit;

提交完成。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-1684587/,如需轉載,請註明出處,否則將追究法律責任。

相關文章