Oracle的相關函式

2021-08-19 19:15:35 字數 4838 閱讀 9186

字串操作函式:

1  concat(p1,p2)--字串連線函式

2  length(p1):求長度

3 lpad(p1,n,p2):從左邊填充,即p1字串,在n個長度中右對齊,剩下的長度用p2填充 lpad('aaa',5,*)--->**aaa

4  rpad(p1,n,p2):同上

5  lower(),upper():大小寫

6  initcap():將每個單詞的第乙個字母大寫,initcap("hello world"), hello world

7  trim(p2 from p1):移除字串兩側的空白字元

8  ltrim(p1,p2):移除字串左側的空白字元

9  rtrim(p1,p2):移除字串右側的空白字元

10 substr(p1,n,[length]):n為負表示從右向左擷取n個字元,為正:從左向右 0-length-1

11  substr(p1,n1,length):n1:規定從何處開始擷取length長度的字元

*********************************************

12instr(p1,p2,[,m],n):從p1 m位置開始檢索,p2出現第n次的位置

作用是返回p2子串在p1中出現的位置。

m:表示從p1的第m個字元開始往檢索。

n:表示p2第n次出現。

instr(p1,p2):返回p2子串在p1中第一次出現的下標

instr(p1,p2,m):返回從p1的m位置開始,p2第一次出現的位置。

instr(p1,p2,m,n):返回從p1的m位置開始,p2第n次出現的位置。

注意:沒有子串,返回0

數值函式的學習:

1   number(p,s):p總長,小數點後s位,p的取值範圍在1-38;

p:有效長度。

s:小數點後最多的位置。

p-s:整數字的最大值

number(p):相當於s為0。p的取值範圍在1-38;

也可以不指定p,

number(*,s):p的位置,範圍在1-38;

2   為了考慮資料庫的移植和相容問題。oracle提供了其他的數值型別

numeric(p,s)相當於number(p,s)

decimal(p,s)/dec(p,s)相當於number(p,s)

integer/int相當於number(38)

smallint相當於number(38)

float相當於number

double precision 相當於number

real 相當於number

幾種函式:::::   函式1:四捨五入函式

round(p,n):

對p進行四捨五入,保留小數點後n位。

n可以不寫,相當於n為0。取整。

n可以為負數,保留到小數點前n位。

函式2: 擷取函式 

trunc(p,n):

對p進行擷取操作,保留小數點後n位。

n可以不寫,相當於n為0。只擷取整數

n可以為負數,擷取到小數點前n位。

函式3:取餘函式

mod(m,n):

表示m對n做取餘操作。

函式4:向上取整/向下取整函式

ceil(m)/floor(m)

ceil(m):表示取大於等於m的最小整數

floor(m):表示取小於等於m的最大整數。

日期操作函式:

date:日期型別,預設格式'yy-mon-rr',佔七個位元組大小

第乙個位元組:表示世紀  +100

第二個位元組:年

第三個位元組:月

第四個位元組:日

第五個位元組:時

第六個位元組:分

第七個位元組:秒

timestamp:時間戳型別,最長佔11個位元組大小

前七個位元組與date一致。後四個位元組儲存的是精確度,可以精確到納秒

關鍵字:

sysdate:返回的是當前系統時間。精確到日,格式:15-3月-18

systimestamp:返回的是當前系統時間,精確到納秒,格式:15-3月 -18 10.05.45.788000000 上午 +08:00

select systimestamp from emp 

格式:yyyy:表示年

mm:月

dd:日

hh24:24小時制的時

hh/hh12:12小時制

mi:分

ss:秒

am:表示上下午

day/dy:表示星期幾

d:表示一周的第幾天

ddd:表示一年的第幾天

函式1:        

to_char(p1,fmt) 通常都是在查詢語句中使用

作用將p1按照格式fmt進行顯示。

p1:日期型別

fmt:字串,格式

函式2:

to_date(p1,fmt),通常都是在插入中使用

作用將p1按照格式fmt變成日期型別

p1:字串型別

fmt:字串,格式

函式3:

last_day(p1):

檢視p1日期所在月的最後一天的日期

函式4:

add_months(p1,n):

表示檢視p1日期的n個月後的日期。

n:表示增加的月數。

n:可以為小數,但是會擷取成整數進行增加。

n:可以為負數,表示p1的前幾個月。

函式:months_between(p1,p2)   

計算p1日期和p2日期之間相差的月數。

可能為小數。

計算規則:p1-p2,

可能為負數。

日期函式--續

1:next_day(date,num)

表示檢視引數date的下乙個週幾的日期

date:某一日期

num:範圍為1-7,表示週日到週六

2:least(p1,p2,p3,...)

多個引數比較,顯示最小的資料

greatest(p1,p2,p3,………………)

多個引數比較,顯示最大的資料

要求:引數為同一型別

或者可以預設轉換成第乙個引數的型別。

引數型別基於第乙個引數型別,以第乙個引數的型別為基準  

字串型別比較大小:比較的字元的ascii碼的大小。

3:extract( p1 from p2):

表示從日期p2中提取分量p1

日期的分量:

year

month

dayhour

minute

second  

日期型別關鍵字sysdate和systimestamp,表示當前系統時間

可以從sysdate中提取年月日

可以從systimestamp中提取年月日時分秒

空值操作:

null:表示空的意思。

1:表中的任何字段,預設情況下都可以為null值。

2:not null表示 非空,是一種約束,

設定為非空約束的字段,必須有有效值,不能為空

3:插入資料時,

reg:

insert into emp (empno,ename) values(2001,'張三');

此記錄中,沒有賦值的字段都是null值。

reg:

insert into emp (empno,ename) values(2002,null);

此記錄中,欄位ename為null值。

4:修改資料時,

(1)當空值為條件時

update emp set ename='張三' where comm is null;

(2)當被設定為null時,

update emp set ename = null;

5:當空值參與計算時。

null:相當於無窮大

1+null為null

null也不等於null

reg:計算員工的月收入

select sal+comm from emp; 明顯結果有問題。

空值操作函式:

(1)nvl(p1,p2)

表示:如果p1這個欄位的值為null,就使用p2

否則使用本身p1

(2)nvl2(p1,p2,p3)

表示:如果p1是null,就使用p2,

如果是null,使用p3

基礎查詢語句:dql  query(查詢的意思)    select colname1,………… from tname;

1:select子句:查詢語句中必不可少的一部分

select 後可以指定要顯示的欄位名

可以使用萬用字元* 來代替表中的所有欄位名。

欄位名 後 可以起 列別名

as可以忽略。      

2:from子句:查詢語句中必不可少的一部分

from 用來指定要操作的表物件

表名也可以起別名,直接在表名後 新增別名。

不能使用as

3:where子句:

用來使用限制條件進行查詢的。

查詢出符合限制條件的記錄。

符號:=,>,<,>=,<=,!=  

注意:  多個條件時使用and或者or進行連線。

當條件在某乙個區間內或不在某一區間內時,

可以使用

[not] between p1 and p2 

當條件為某些固定值時,可以使用集合。

in/not in

用法:欄位名  in (值1,值2,…………);

表示符合集合中的任意乙個即可。

相當於or 

欄位名 not  in (值1,值2,…………);

表示不符合集合的任何乙個。

相當於and

oracle函式相關

1.nvl oracle的nvl函式的用法 通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值 select nvl sum t.dwxhl 1 from tb jhde t where zydm 1 這裡關心的nvl的用法,nvl arg,value 代表如果前面的arg的值...

oracle相關函式

大寫的ps oracle儲存過程測試進不去解決方案 重新編譯 trunc sysdate,d 1 表示今天所在周的周一的年月日,如今天是2016.04.21周四,則trunc sysdate,d 1表示2016.04.18周一 select trunc sysdate from dual case ...

Oracle 日期函式相關

1 獲取當前日期 不要想著用now 那是mysql裡面用的,oracle需要使用sysdate select sysdate from dual2 格式轉化 字串 日期 select to date 2017 01 12 yyyy mm dd hh24 mi from dual日期 字串 selec...