Oracle函式 單行字串函式

2021-04-08 20:00:18 字數 3957 閱讀 8525

函式是一種有零個或多個引數並且有乙個返回值的程式

在sql中oracle內建了一系列函式  被稱為sql或pl/sql語句

主要分為兩大類: 單行函式  組函式  

1. 單行函式

字元、數字、日期、轉換、混合型 等多種函式 用於處理單行資料  統稱單行函式

均可用於select where order by 等子句中

也可以在其他語句中使用 如update的set子句  insert的values子句  delet的where子句

單行字串函式用於操作字串資料  大多數有乙個或多個引數  絕大多數返回字串

(1) null和單行函式

null值表示乙個未知資料或者乙個空值

算術操作符的任何乙個運算元為null值 結果均為null值

只有concat  decode  dump  nvl  replace 在呼叫了null引數時能夠返回非null值

nvl函式時最重要的  直接處理null值

nvl有兩個引數:nvl(x1,x2)  x1和x2都式表示式  當x1為null時返回x2,否則返回x1

( 不是簡單加起來 如果某一行是null值 那麼結果就將是null  要使用nvl函式來排除null值的影響

update empset salary=(salary+nvl(bonus,0)*1.1 )

(2) ascii(' '): 

string 是一字串 返回string 第乙個字母的ascii碼 : 逆函式是chr()

select ascii(''a'') from table_name

(3) chr():

i 是乙個數字 函式返回十進位制表示的字元

select chr(65) from table_name

(4) concat( 'string1' , 'string2' ) :

string1, string2 均為字串 將string1連線到string2後

string1為null 返回string2 string2為null 返回string1 均為null 返回null

(5) initcap( 'string1' , 'string2' .'string3')

string為字串

將每個單詞的第乙個字母大寫 其他字母小寫返回 

單詞由空格 控制字元 標點符號限制

select initcap( 'string1' , 'string2' ) from table_name

(6) instr( 'string1' ,'s', i , j ):

string1, string2為字串 i, j為整數

返回string2在string1中第j次出現的位置 搜尋從string1的第i個字元開始

當無需要字元返回0

若i為負 搜尋從右向左 但位置計算仍從左向右 i,j預設為1

select instr('miss', 'i', 1, 3) from table_name

instrb(string1, string2, i, j)

與instr() 相似 返回位元組 對於單位元組instrb()=instr()

(7) length(string1)

string1為字串 返回string1的長度

如果string1為null 返回null值

select length('tianjin university') from table  ==> 18

lengthb()

與length()相似 返回位元組

(8) lower(string)

返回string的小寫字元 常出現在where子串中

select * from table 

where lower(productfamily_no) like '%d6288_1%' 

返回所有轉換成小寫形式為"d6288_1"(即在db中是"d6288_1"或"d6288_1"形式的)

(9) upper(string)

返回string的大寫 常出現在where子串中 與lower(string)

select productfamily_no from table

where upper(productfamily_no) like'%d6288_1%'

(10) lpad('string1', i,'string2')

i為整數 在string1左側 用string2字串 補足 致長度 i, 可重複多次

若i小於string1的長度 只返回 i 那麼長的string1字元 其他的被截去

string2的預設值為單空格 

select lpad('yes',2,'no') from table   ==>"ye"

select lpad('yes',4,'no') from table  ==>"nyes"

select lpad('yes',5,'no') from table  ==>"noyes"

select lpad('yes',7,'no') from table  ==>"nonoyes"

(11) rtrim('string1', 'string2')

將string1最右邊的字元去掉 使其後第乙個字元不在string2中

若無string2, 那麼string1不會改變

select lpad('yes','no') from table  ==>"yes"

select lpad('yes','sno') from table  ==>"ye"

select lpad('yes','seno') from table  ==>"y"

select lpad('yes','yesno') from table   ==>"y"

select lpad('yes','yesno') from table   ==>" "

(12) replace('string1','string2','string3')

string1, string2, string3都是字串

函式用string3代替出現在string1中的string2後返回

select repalce('yesno', 'no', 'no') from table ==>"yesno"

(13) substr('string1', i, j)

string1為字串, i, j為整數

從string1的第 i 位開始返回長度為 j 的字串

如果 j 為空 則直到串的尾部

select substr('yesno', 2, 3) from table  ==>"esn"

substrb('string1', i, j)

與substr相似 只是 i, j以位元組計算

(14) soundex('string1')

返回與string1發音相同的詞

select soundex('yes')  yes, soundex('no') no from table

(15) translate('string1', 'string2', 'string3')

將string1與string2相同的字元以string3代替

select translate('yos', 'o', 'e') from table ==>"yes"

(16) trim( leading| trailing| both 'trim_character' from ' trim_source ')

若無其他引數 返回去掉前後空格的"trim_source"

否則返回處理好的"trim_source"

select trim(leading 'y' from 'yesyesy') from table ==>"esyesy"

select trim(trailing 'y' from 'yesyesy') from table ==>"yesyes"

select trim(both 'y' from 'yesyesy') from table ==> "esyes" 

oracle函式 單行字串函式

單行字串函式 單行字串函式用於操作字串資料,他們大多數有乙個或多個引數,其中絕大多數返回字串 ascii c1是一字串,返回c1第乙個字母的ascii碼,他的逆函式是chr select ascii a big a,ascii z big z from empbig a big z65 122 ch...

Oracle 內建函式之常見單行字串函式

ascii c1是一字串,返回c1第乙個字母的ascii碼,他的逆函式是chr concat c1,c2均為字串,函式將c2連線到c1的後面,如果c1為null,將返回c2.如果c2為null,則返回c1,如果c1 c2都為null,則返回null。他和操作符 返回的結果相同 initcap c1為...

Oracle單行字元函式

1.lower 字元轉換為小寫 select lower test from dual dual是oracle提供的虛表。2.upper 字元轉換為大寫 select upper test from dual 3.initcap 把每個字元的開頭轉換為大寫,其餘轉換為小寫 select initca...