oracle 10g函式大全--字元型函式

水之原發表於2013-08-27
ASCII(x1)
【功能】:返回字元表示式最左端字元的ASCII 碼值。
【引數】:x1,字元表示式
【返回】:數值型
【示例】
SQL> select ascii('A') A,ascii('a') a,ascii(' ') space,ascii('示') hz from dual;

A         A          SPACE        hz
--------- --------- --------- ---------
65        97         32         51902

【說明】在ASCII()函式中,純數字的字串可不用‘’括起來,但含其它字元的字串必須用‘’括起來使用,否則會出錯。
  如果最左端是漢字,只取漢字最左半邊字元的ASCII 碼

【互反函式】:chr()
CHR(n1)
【功能】:將ASCII 碼轉換為字元。
【引數】:n1,為0 ~ 255,整數
【返回】:字元型
【示例】
SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C
-- -
趙 A

【互反函式】:ASCII

CONCAT(c1,c2)
【功能】連線兩個字串
【引數】c1,c2 字元型表示式
 
【返回】字元型

同:c1||c2

【示例】
 select concat('010-','88888888')||'轉23' 高乾競電話 from dual;

高乾競電話
----------------
010-88888888轉23

INITCAP(c1)
【功能】返回字串並將字串的第一個字母變為大寫,其它字母小寫;
【引數】c1字元型表示式
 
【返回】字元型

【示例】
 SQL> select initcap('smith abc aBC') upp from dual;

UPP
-----
Smith Abc Abc

LOWER(c1)
【功能】:將字串全部轉為小寫
【引數】:c1,字元表示式
【返回】:字元型
【示例】
SQL> select lower('AaBbCcDd')AaBbCcDd from dual;

AABBCCDD
--------
aabbccdd

【同類】UPPER()將字串全部轉為大寫。

UPPER(c1)
【功能】將字串全部轉為大寫
【引數】c1,字元表示式
【返回】字元型
【示例】
SQL> select upper('AaBbCcDd') upper from dual;

UPPER
--------
AABBCCDD

【同類】LOWER()將字串全部轉為小寫

NLS_INITCAP(x[,y])
【功能】返回字串並將字串的第一個字母變為大寫,其它字母小寫;
【引數】x字元型表示式
【引數】Nls_param可選,
查詢資料級的NLS設定:select * from nls_database_parameters;

例如:
指定排序的方式(nls_sort=) 。
nls_sort=SCHINESE_RADICAL_M(部首、筆畫)
nls_sort=SCHINESE_STROKE_M(筆畫、部首SCHINESE_PINYIN_M(拼音))

【返回】字元型

【示例】
 select nls_initcap('ab cde') "test",
nls_initcap('a c b d e','nls_sort= SCHINESE_PINYIN_M') "test1" from dual;
返回:Ab Cde, A C B D E

 select nls_initcap('ab cde') "test",
nls_initcap('a c b d e','NLS_LANGUAGE=AMERICAN') "test1" from dual;

NLS_LOWER(x[,y])
【功能】返回字串並將字串的變為小寫;
【引數】x字元型表示式
【引數】Nls_param可選,指定排序的方式(nls_sort=) 。
SCHINESE_RADICAL_M(部首、筆畫)
SCHINESE_STROKE_M(筆畫、部首SCHINESE_PINYIN_M(拼音))
 
【返回】字元型

【示例】
 select nls_LOWER('ab cde') "test",nls_LOWER('a c b d e','nls_sort= SCHINESE_PINYIN_M') "test1" from dual;
返回:ab cde,a c b d e

NLS_UPPER(x[,y])
【功能】返回字串並將字串的轉換為大寫;
【引數】x字元型表示式
【引數】Nls_param可選,指定排序的方式(nls_sort=) 。
SCHINESE_RADICAL_M(部首、筆畫)
SCHINESE_STROKE_M(筆畫、部首SCHINESE_PINYIN_M(拼音))
 
【返回】字元型

【示例】
 select NLS_UPPER('ab cde') "test",NLS_UPPER('a c b d e','nls_sort= SCHINESE_PINYIN_M') "test1" from dual;
返回:AB CDE,A C B D E

INSTR(C1,C2[,I[,J]])
【功能】在一個字串中搜尋指定的字元,返回發現指定的字元的位置;
【說明】多位元組符(漢字、全形符等),按1個字元計算
【引數】
C1    被搜尋的字串
C2    希望搜尋的字串
I     搜尋的開始位置,預設為1
J     第J次出現的位置,預設為1
【返回】數值

【示例】select instr('oracle traning','ra',1,2) instring from dual;
返回:9

【示例】select instr('重慶某軟體公司','某',1,1),instrb('重慶某軟體公司','某',1,1) instring from dual;
返回:3,5

INSTRB(C1,C2[,I[,J]])
【功能】在一個字串中搜尋指定的字元,返回發現指定的字元的位置;
【說明】多位元組符(漢字、全形符等),按2個字元計算
【引數】
C1    被搜尋的字串
C2    希望搜尋的字串
I     搜尋的開始位置,預設為1
J     第J次出現的位置,預設為1
【返回】數值

【示例】select instr('重慶某軟體公司','某',1,1),instrb('重慶某軟體公司','某',1,1) instring from dual;
返回:3,5

LENGTH(c1)
【功能】返回字串的長度;
【說明】多位元組符(漢字、全形符等),按1個字元計算
【引數】C1 字串
【返回】數值型
【示例】
SQL> select length('高乾競'),length('北京市海錠區'),length('北京TO_CHAR') from dual;

length('高乾競')    length('北京市海錠區')     length('北京TO_CHAR')
----------------- ----------------            ----------------------------
            3             6                               9
LENGTH(c1)
【功能】返回字串的長度;
【說明】多位元組符(漢字、全形符等),按2個字元計算
【引數】C1 字串
【返回】數值型
【示例】
SQL> select length('高乾競'),lengthB('高乾競') from dual;

length('高乾競')    lengthB('高乾競')   
----------------- ----------------           
            3             6          
LENGTHC(c1).LENGTH2(c1).LENGTH4(c1)
【功能】返回字串的長度;
【說明】多位元組符(漢字、全形符等),按1個字元計算
【引數】C1 字串
【返回】數值型
【示例】
SQL> select length('高乾競'),length('北京市海錠區'),length('北京TO_CHAR') from dual;

Oracle中的字元函式中,有一類函式是求字元長度的函式,length、lengthB、lengthC、length2、length4幾個函式中比較常用的是length、lengthB。

他們的含義分別是:
Length函式返回字元的個數,使用定義是給定的字符集來計算字元的個數
LENGTHB給出該字串的byte
LENGTHC使用純Unicode
LENGTH2使用UCS2
LENGTH4使用UCS4

下面使一些例子:
Select length('你好') from dual;  2

Select lengthB('你好'),lengthC('你好'),length2('你好'), length4('你好')  from dual; 

LPAD(c1,n[,c2])
【功能】在字串c1的左邊用字串c2填充,直到長度為n時為止
【引數】C1 字串
n 追加後字元總長度
c2 追加字串,預設為空格
【返回】字元型
【說明】如果c1長度大於n,則返回c1左邊n個字元
如果如果c1長度小於n,c2和c1連線後大於n,則返回連線後的右邊n個字元

【示例】
SQL> select lpad('gao',10,'*') from dual;

lpad('gao',10,'*')
-----------------
*******gao

不夠字元則用*來填滿

【相似】RPAD()在列的右邊貼上字元
【相反】LTRIM() 刪除左邊出現的字串

RPAD(c1,n[,c2])
【功能】在字串c1的右邊用字串c2填充,直到長度為n時為止
【引數】C1 字串
n 追加後字元總長度
c2 追加字串,預設為空格
【返回】字元型
【說明】如果c1長度大於n,則返回c1左邊n個字元
如果如果c1長度小於n,c1和c2連線後大於n,則返回連線後的左邊n個字元
如果如果c1長度小於n,c1和c2連線後小於n,則返回c1與多個重複c2連線(總長度>=n)後的左邊n個字元

【示例】
SQL> select rpad('gao',10,'*a') from dual;

rpad('gao',10,'*a')
-----------------
gao*a*a*a*

【相似】LPAD()在列的左邊貼上字元
【相反】RTRIM() 刪除右邊出現的字串

LTRIM(c1,[,c2])
【功能】刪除左邊出現的字串
【引數】C1 字串
c2 追加字串,預設為空格
【返回】字元型


【示例】
SQL> select LTRIM('   gao qian jing',' ') text from dual;
或:select LTRIM('   gao qian jing') text from dual;

text
-----------------
gao qian jing

【相似】RTRIM()刪除右邊出現的字串
【相反】LPAD() 在列的左邊貼上字元

RTRIM(c1,[,c2])
【功能】刪除右邊出現的字串
【引數】C1 字串
c2 追加字串,預設為空格
【返回】字元型

【示例】
SQL> select RTRIM('gao qian jingXXXX','X') text from dual;

text
-----------------
gao qian jing

【相似】LTRIM()刪除左邊出現的字串
【相反】RPAD() 在列的右邊貼上字元

REPLACE(c1,c2[,c3])
【功能】將字元表示式值中,部分相同字串,替換成新的字串
【引數】
c1   希望被替換的字元或變數 
c2   被替換的字串
c3   要替換的字串,預設為空(即刪除之意,不是空格)
【返回】字元型

【示例】
SQL> select replace('he love you','he','i') test from dual;

test
------------------------------
i love you

SOUNDEX(c1)
【功能】返回字串引數的語音表示形式
【引數】c1,字元型
【返回】字串

【說明】相對於比較一些讀音相同,但是拼寫不同的單詞是非常有用的。

計算語音的演算法: 
  1.保留字串首字母,但刪除a、e、h、i、o、w、y 
  2.將下表中的數字賦給相對應的字母 
  (1) 1:b、f、p、v 
  (2) 2:c、g、k、q、s、x、z 
  (3) 3:d、t 
  (4) 4:l 
  (5) 5:m、n 
  (6) 6:r 
  3. 如果字串中存在擁有相同數字的2個以上(包含2個)的字母在一起(例如b和f),或者只有h或w,則刪除其他的,只保留1個 
  4.只返回前4個位元組,不夠用0填充 
  示例: 
  soundex('two'),soundex('too'),soundex('to'),他們的結果都是T000 
  soundex('cap'),soundex('cup'),他們的結果都是C100 
  soundex('house'),soundex('horse'),他們的結果都分別是H200,H620

SUBSTR(c1,n1[,n2])
【功能】取子字串
【說明】多位元組符(漢字、全形符等),按1個字元計算
【引數】在字元表示式c1裡,從n1開始取n2個字元;若不指定n2,則從第y個字元直到結束的字串.
【返回】字元型

【示例】
SQL> select substr('13088888888',3,8) test from dual;

test
--------
08888888

SUBSTRB(c1,n1[,n2])
【功能】取子字串
【說明】多位元組符(漢字、全形符等),按2個字元計算
【引數】在字元表示式c1裡,從n1開始取n2個字元;若不指定n2,則從第y個字元直到結束的字串.
【返回】字元型,如果從多字元右邊開始,則用空格表示。

【示例】
select substr('我手機13012345678',4,11),substrb('我手機13012345678',4,11),substrb('我手機13012345678',3,11) test from dual;
返回:13012345678, 機13012345,手機1301234

TRANSLATE(c1,c2,c3)
【功能】將字元表示式值中,指定字元替換為新字元
【說明】多位元組符(漢字、全形符等),按1個字元計算
【引數】
c1   希望被替換的字元或變數 
c2   查詢原始的字符集
c3   替換新的字符集,將c2對應順序字元,替換為c3對應順序字元
如果c3長度大於c2,則c3長出後面的字元無效
如果c3長度小於c2,則c2長出後面的字元均替換為空(刪除)
如果c3長度為0,則返回空字串。
如果c2裡字元重複,按首次位置為替換依據

【返回】字元型

【示例】
select TRANSLATE('he love you','he','i'),
TRANSLATE('重慶的人','重慶的','上海男'),
TRANSLATE('重慶的人','重慶的重慶','北京男士們'),
TRANSLATE('重慶的人','重慶的重慶','1北京男士們'),
TRANSLATE('重慶的人','1重慶的重慶','北京男士們') from dual;
返回:i love you,上海男人,北京男人,1北京人,京男士人

TRIM(c1 from c2)
【功能】刪除左邊和右邊出現的字串
【引數】C2 刪除前字串
c1 刪除字串,預設為空格
【返回】字元型

【示例】
 select TRIM('X' from 'XXXgao qian jingXXXX'),TRIM('X' from 'XXXgaoXXjingXXXX') text from dual;
返回:gao qian jing		gaoXXjing

【相似】LTRIM()刪除左邊出現的字串  RTRIM()刪除右邊出現的字串

相關文章