oracle中一些基本函式的使用

2021-10-10 05:32:12 字數 4472 閱讀 4552

---數字計算函式

1.round函式(四捨五入)

描述 : 傳回乙個數值,該數值是按照指定的小數字元數進行四捨五入運算的結果

引數:number : 欲處理之數值

decimal_places : 四捨五入 , 小數取幾位 ( 預設為 0 )

select round(123.456, 0) from dual; 返回123

select round(123.456, 1) from dual; 返回123.5

select round(-123.456, 2) from dual; 返回-123.46

2.ceil和floor函式

ceil和floor函式在一些業務資料的時候,有時還是很有用的。

ceil(n) 取大於等於數值n的最小整數;

floor(n)取小於等於數值n的最大整數

select ceil(1.5) a from dual; 返回2

select ceil(-1.5) a from dual; 返回-1

select floor(1.5) a from dual; 返回1

select floor(-1.5) a from dual; 返回-2

3.trunc函式

1)trunc函式處理數字

格式:trunc(number[,decimals])

解析:number 待做擷取處理的數值

decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分。

trunc就是處理數字的顯示位數,如果decimals為負數,就處理整數部分,處理完為0,-1就是個位為零,-2就到了十位,如果超過了 整數部分長度,則整個數字0;

2)處理日期

格式:trunc(date,[fmt])   

解析: trunc函式返回以指定元元素格式截去一部分的日期值,date為必要引數,是輸入的乙個日期值,

fmt引數可忽略,是日期格式,用以指定的元素格式來截去輸入的日期值。忽略它則由最近的日期截去

使用例子如下:

trunc(sysdate,'yyyy') --返回當年第一天.

trunc(sysdate,'mm') --返回當月第一天.

trunc(sysdate,'d') --返回當前星期的第一天.

select trunc(sysdate,'yyyy') from dual;

select trunc(sysdate,'mm') from dual;

select trunc(sysdate,'d') from dual;

4.add_months()函式

格式:add_months(x,y)或者add_months(times,months),第二個引數單位是月份。

解析:這個函式用於計算在時間x之上加上y個月後的時間值,要是y的值為負數的話就是在

這個時間點之前的時間值(這個時間-y個月)。

用法例項:

a:--從emp表查詢列出來公司就職時間超過24年的員工名單

select ename, hiredate from emp

where hiredate <= add_months(sysdate, -288);

--負數代表系統時間(sysdate)之前的24年的時間-288 = -24*12

b:--查詢出在員工'scott'入職一年**職的員工的資訊

select ename, a.hiredate, sal from emp a,

(select hiredate from emp where ename = 'scott') b

where a.hiredate > = add_months(b.hiredate, 12);

解析:上面的查詢思路如下

a:在from語句的後面將員工'scott'的入職時間查出放在乙個表裡,表的別名為b

b:將上面的b表再次作為查詢表

c:然後利用add_months(x,y)函式在b表的hiredate之後的12個月作為查詢條件

c:--查詢半年前的時間

select add_months(sysdate,-6) from dual;

解析:dual是oracle提供的最小功能表,為了湊齊sql語法,它只有一行一列。

--字串處理函式

1、instr()函式的格式  (俗稱:字串查詢函式)

格式一:instr( string1, string2 )    /   instr(源字串, 目標字串)

注:在oracle/plsql中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,也就是說從字元的開始到字元的結尾就結束。

例項:

--預設第一次出現「l」的位置

select instr('helloworld','l') from dual; --返回結果:3

--即:在「lo」中,「l」開始出現的位置

select instr('helloworld','lo') from dual; --返回結果:4

--即「w」開始出現的位置

select instr('helloworld','wo') from dual; --返回結果:6

--在"helloworld"的第2(e)號位置開始,查詢第二次出現的「l」的位置

select instr('helloworld','l',2,2) from dual; --返回結果:4

--在"helloworld"的第3(l)號位置開始,查詢第二次出現的「l」的位置

select instr('helloworld','l',3,2) from dual; --返回結果:4

--在"helloworld"的第4(l)號位置開始,查詢第二次出現的「l」的位置

select instr('helloworld','l',4,2) from dual; --返回結果:9

--在"helloworld"的倒數第1(d)號位置開始,往回查詢第一次出現的「l」的位置

select instr('helloworld','l',-1,1) from dual; --返回結果:9

--在"helloworld"的倒數第2(l)號位置開始,往回查詢第二次出現的「l」的位置

select instr('helloworld','l',-2,2) from dual; --返回結果:4

--在"helloworld"的第2(e)號位置開始,查詢第三次出現的「l」的位置

select instr('helloworld','l',2,3) from dual; --返回結果:9

--在"helloworld"的倒數第2(l)號位置開始,往回查詢第三次出現的「l」的位置

select instr('helloworld','l',-2,3) from dual; --返回結果:3

注:模糊查詢like 和 instr() 函式以下用法有相同查詢效果,如下所示:

mysql: select * from tablename where name like '%helloworld%';

oracle:select * from tablename where instr(name,'helloworld')>0;

這兩條語句的效果是一樣的

2、substr(string,a,b)/substr(string,a)

string 為字串,string 表示需要擷取的字串。

a、b 均為整型數字,a 表示開始擷取的位置,b 表示擷取幾位,b 為空時衝開始位置擷取全部字串。

3、 replace(string1,tring2,sring3)

sring 為字串;

string1 表示即將要修改和查詢的字段。string2 表示要查詢的字段,即被替換的字段;string3 表示要替換的新字段。

4 、decode(string, tring1, value1, value2)

string 表示原字串或者表示式,string1 表示需要滿足的條件,可以是值,也可以是表示式。

如果滿足條件,則返回 value1 ,如果不滿足條件,則返回 value2 。

decode(string, tring1, value1, string2, value2……)

string 表示原字串,如果字串為 string 等於 string1,則返回 value1 ,如果字串為 string 等於 string2,則返回 value2。

還有to_char(),to_date(),to_number(),sum()等較為簡單的函式就不介紹了,以後遇到相應的函式都會補充上來。

Oracle中一些常用符號

oracle的萬用字元,運算子一般在where條件子句 現 運算子 等於 包含 in not in exists not exists 範圍 between.and not between.and 匹配測試 like not like null測試 is null is not null 萬用字元 ...

opencv中一些功能函式

int floodfill inputoutputarray image,point seedpoint,scalar newval,rect rc 0,scalar lodiff scalar scalar updiff scalar int flags 4 int floodfill input...

tensorflow中一些重要函式

請參考這裡 tf.nn.conv2d input,filter,strides,padding,use cudnn on gpu none,name none 除去name引數用以指定該操作的name,與方法有關的一共五個引數 第乙個引數input 指需要做卷積的輸入影象,它要求是乙個tensor,...