字串操作函式:
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...