【ORACLE】oracle字串對象的處理,oracle字串對象
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位小數