Oracle函数——字符函数
ASCII(n)函數:返回字符串的ASCII碼(當輸入為字符串時返回第一個字符的ASCII碼)
SELECT ASCII('abc') FROM dual;
結果:97
CHR(n)函數:返回對應ASCII碼的字符(n必須為數字類型) SELECT CHR(97) FROM dual;
結果:a
CONCAT(n,m)函數:連接n和m,n和m可以試字符,也可以是字符串。作用和“||”一樣。
SELECT CONCAT('Hello','world') FROM dual;結果:Helloworld
LENGTH(n)函數:返回字符或字符串的長度
SELECT LENGTH('Hello') FROM dual;結果:5
VSIZE(value)函數:獲得value的內部表示的字節數.如果value是NULL,結果是NULL.
select vsize('Hello')from dual;
結果:5
DUMP(expr[,return_fmt[,start_position][,length]])函數:用于返回表達式所對應的數據類型代碼,長度,以及內部格式。當完全沒有參數時,直接返回null。
expr:這個參數是要進行分析的表達式(數字或字符串等,可以是各個類型的值)return_fmt:指返回參數的格式,有5種用法:
? ? ? ? ? 1)8:以8進制返回結果的值
? ? ? ? ? 2)10:以10進制返回結果的值(默認)
? ? ? ? ? 3)16:以16進制返回結果的值
? ? ? ? ? 4)17:以單字符的形式返回結果的值
? ? ? ? ? 5)1000:以上4種加上1000,表示在返回值中加上當前字符集
start_position:開始進行返回的字符位置
length:需要返回的字符長度
select dump('Hello',1010) from dual;
結果:Typ=96 Len=5 CharacterSet=ZHS16GBK: 72,101,108,108,111
LTRIM(chr,TRIM_STR)函數:去掉字符串chr左邊包含的TRIM_STR字符串中的任何字符,直到出現一個不包含在TRIM_STR中的字符為止。TRIM_STR可選,缺省截去空格
SELECT LTRIM('**a***Hello***%','*a') FROM dual;結果:Hello***%
RTRIM(chr,TRIM_STR)函數:去掉字符串chr右邊包含的TRIM_STR字符串中的任何字符,直到出現一個不包含在TRIM_STR中的字符為止 SELECT RTRIM('**a***Hello***%','%*') FROM dual;
結果:**a***Hello
TRIM([LEADING|TRAILING|BOTH][TRIM_STR ?FROM]chr)函數:TRIM_STR可選,缺省截去空格;LEADING:指明僅僅將字符串的前綴字符刪除,TRAILING:指明僅僅將字符串的尾隨字符刪除,默認為BOTH,刪除兩邊字符。 SELECT TRIM(both'='FROM'=Hello=') FROM dual;
結果:Hello
LPAD(chr1,n,[char2])函數:在chr1左邊填充字符chr2,使得字符總長度為n。chr2可選,默認為空格;當chr1字符串長度大于n時,則從左邊截取chr1的n個字符顯示。 SELECT LPAD('ab',5,'12') FROM dual;?
結果:121ab
RPAD(chr1,n,[char2])函數:在chr1右邊填充字符chr2,使得字符總長度為n。chr2可選,默認為空格;當chr1字符串長度大于n時,則從左邊截取chr1的n個字符顯示。 SELECT RPAD('ab',5,'12') FROM dual;?
結果:ab121
INITCAP(n)函數:將字符串n中每個單詞首字母大寫。
SELECT INITCAP('abcde') FROM dual;
結果:Abcde
LOWER(n)函數:將n轉為小寫
SELECT LOWER('HELLO') FROM dual;
結果:hello
UPPER(n)函數:將n轉為大寫
SELECT UPPER('hello') FROM dual;
結果:HELLO
NLS_INITCAP(chr[,nlsparams])函數:將chr首字母大寫。nlsparams指定了不同于該會話缺省值的不同排序序列。如果不指定參數,則功能和INITCAP相同。Nlsparams可以使用的形式是:‘NLS_SORT=sort’ 這里sort制訂了一個語言排序序列。
nls_sort=SCHINESE_RADICAL_M(部首、筆畫)
nls_sort=SCHINESE_STROKE_M(筆畫、部首)
nls_sort=SCHINESE_PINYIN_M(拼音)
SELECT NLS_INITCAP('ab cd','nls_sort=SCHINESE_STROKE_M') FROM dual;
結果:Ab Cd
NLS_LOWER(string[,nlsparams])函數:返回字符串中的所有字母都是小寫形式的string。不是字母的字符不變。Nlsparams參數的形式與用途和NLS_INITCAP中的nlsparams參數是相同的。如果nlsparams沒有被包含,那么NLS_LOWER所作的處理和LOWER相同。
SELECT NLS_LOWER('AB CD','nls_sort=SCHINESE_STROKE_M') FROM dual;結果:ab cd
NLS_UPPER(string[,nlsparams])函數:返回字符串中的所有字母都是大寫的形式的string。不是字母的字符不變。nlsparams參數的形式與用途和NLS_INITCAP中的相同。如果沒有設定參數,則NLS_UPPER功能和UPPER相同。
SELECT NLS_UPPER('ab cd','nls_sort=SCHINESE_STROKE_M') FROM dual;
結果:AB CD
NLSSORT(col[,nls_param])函數:根據nls_param指定的方式對col字段進行排序
select * from TEST order by NLSSORT(課程,'nls_sort=SCHINESE_PINYIN_M')
INSTR(string1,string2[,start_position[,nth_appearance]])函數:instr是一個非常好用的字符串處理函數,幾乎所有的字符串分隔都用到此函數。返回要截取的字符串string2在源字符串string1中按正向排列得出的位置。start_position和nth_appearance可選,省略默認為1;start_position代表開始查找的起始位置,如果此參數為負,從尾部開始檢索;nth_appearance代表字符串出現的次數。
SELECT INSTR('Hello world','o',6,1) FROM dual;結果:8
SUBSTR(chr,start,length)函數:是從給定的字符表達式或備注字段中返回一個子字符串,start代表開始位置,截取length個字符,缺省length,默認到結尾
SELECT SUBSTR('ABCDE',2,3) FROM dual;結果:BCD
REPLACE(chr,old,new)函數:在chr中查找old,并替換成new,當old為null時,返回chr;當new為null時,返回chr中截取掉old部分的字符串。
SELECT REPLACE('ABCDE','CD','123')FROM dual;結果:AB123E
TRANSLATE(string,from_str,to_str)函數:將字符string按照from_str與to_str的對應規則進行處理,返回將所出現的from_str中的每個字符替換為to_str中的相應字符以后的string. TRANSLATE是REPLACE所提供的功能的一個超集.如果from_str比to_str長,那么在from_str中而不在to_str中而外的字符將從string中被刪除,因為它們沒有相應的替換字符. to_str不能為空.Oracle把空字符串認為是NULL,并且如果TRANSLATE中的任何參數為NULL,那么結果也是NULL.
Select TRANSLATE('ABCDE','CD','123') from dual
結果:AB12E
SOUNDEX(string)函數:返回string的聲音表示形式.這對于比較兩個拼寫不同但是發音類似的單詞而言很有幫助,如果字符發音相同,則返回的結果會一致.
SQL> create table table1(xm varchar(8));
SQL> insert into table1 values('weather');
SQL> insert into table1 values('wether');
SQL> insert into table1 values('gao');
?select xm from table1 where soundex(xm)=soundex('weather');
結果:weather
? ? ? wether
總結
以上是生活随笔為你收集整理的Oracle函数——字符函数的全部內容,希望文章能夠幫你解決所遇到的問題。