2.1 char字段,varchar2字段
(1)定義字段長度char(10)表示字段可以存放10個英文字符(不管任何編碼方式,英文字符都占10個字節嗎?),且分配物理空間的時候,總是分配10個字符的位置。定義可變長varchar(10)表示最多可以存放10個英文字符,且分配物理空間的是,根據實際字段的數據,分配實際的空間
(2)char和varchar2的最長字段類型長度
Char(2000),varchar2(4000)
(3)varchar字段的中文問題。
定義字段為varchar(2),插入中文字符”你好”是插不進去的。因為”你好”占用的空間,超過了最大的空間兩個英文字符空間
一個英文字符占用幾個字節,一個中文字符占用幾個字節,要看字符的編碼規則。
查看編碼的函數為:
select userenv('language') from dual;
設計表的時候,一般按照中文字符數量的三倍來設計varchar2字段的容量。
(4)nvarchar類型
Nvarchar2類型解決varchar2類型的中文問題,nvarchar(2),不管中文字符,還是英文字符都能最多只能存放兩個字符。
2.2 字符的處理函數
(1)trim,ltrim,rtrim去除字符串頭或尾的空格
(2)lpad,rpad函數默認按照空格,前或者後填充到一定長度
例如,
select lpad(lname,50,'*') from foo_6;
select lpad(lname,50) from foo_6;
(1) 利用substr()函數獲取第n字符後面的所有字符(oracle中字符下標從1開始計算)
Substr(lname,3);
可以定義獲取字符的長度5,
例如
Substr(lname,3,5)
(2) substr起始位置下標,可以為負數,表示從後面往前數的位置,取字符串還是往後取。
例如,
Substr(lname,-5)表示取最後的五個字符。
(3) instr函數找到字符的下標位置
insrt(lname,’查找字符’,起始位置)
可以查找第幾次出現的位置,
例如
Insr(lname,’查看字符’,起始位置,第幾次出現)
(4) length函數獲取字符的個數
length(“你好”) length(‘ab’)返回值都是2,表示兩個字符,字符下標最大為2,不表示占用的字節數量。
3 oracle數字對象
Number(10)有效數字為10
Number(10,2)有效數字為10,含2位小數