-
SQL> create table users
? 2? (id varchar2(10),
? 3? name varchar2(11),
? 4? cardid varchar2(18),
? 5? deptno varchar2(10),
? 6? regdate date,
? 7? age number(4,0));
表已創(chuàng)建。
SQL> insert into users values('1','abc','12345619920505','01',sysdate,'');
已創(chuàng)建 1 行。
SQL> select * from users;
ID? ? ? ? ?NAME? ? ? ? CARDID? ? ? ? ? ? ?DEPTNO? ? ?REGDATE? ? ? ? ? ? ? ?AGE
---------- ----------- ------------------ ---------- -------------- ----------
1? ? ? ? ? abc? ? ? ? ?12345619920505? ? ?01? ? ? ? ?30-1月 -22
SQL> select substr(cardid,7,8) from users;
SUBSTR(CARDID,7,
----------------
19920505
SQL> select replace(deptno,'01','信息技術(shù)') from users;
REPLACE(DEPTNO,'01','信息技術(shù)')
--------------------------------------------------------------------------------
信息技術(shù)
SQL> select mod(age,10) from users;
MOD(AGE,10)
-----------
SQL> update usres set age=25;
update usres set age=25
? ? ? ?*
第 1 行出現(xiàn)錯誤:
ORA-00942: 表或視圖不存在
SQL> update users set age=25;
已更新 1 行。
SQL> select mod(age,10) from users;
MOD(AGE,10)
-----------
? ? ? ? ? 5
SQL> select extract(year from regdate) from users;
EXTRACT(YEARFROMREGDATE)
------------------------
? ? ? ? ? ? ? ? ? ? 2022
SQL> select * from users where extract(month from regdate) = 5;
未選定行
SQL> select * from users where extract(month from regdate) = 1;
ID? ? ? ? ?NAME? ? ? ? CARDID? ? ? ? ? ? ?DEPTNO? ? ?REGDATE? ? ? ? ? ? ? ?AGE
---------- ----------- ------------------ ---------- -------------- ----------
1? ? ? ? ? abc? ? ? ? ?12345619920505? ? ?01? ? ? ? ?30-1月 -22? ? ? ? ? ? ?25
查看全部 -
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2022-01-30 12:57:45
SQL> select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2022-01-30 12:58:01
SQL> select to_date('2015-5-22','YYYY-MM-DD') from dual;
TO_DATE('2015-
--------------
22-5月 -15
SQL> select to_char(12345.678,'$99,999.999') from dual;
TO_CHAR(1234
------------
?$12,345.678
SQL> select to_char(12345.678,'$99,999,999') from dual;
TO_CHAR(1234
------------
? ? ?$12,346
SQL> select to_char(12345.678,'S99,999,999') from dual;
TO_CHAR(123
-----------
? ? +12,346
SQL> select to_number('$1,000','$9999') from dual;
TO_NUMBER('$1,000','$9999')
---------------------------
查看全部 -
1.系統(tǒng)時間
sysdate,默認(rèn)dd-mon-rr? 日-月-年
2.日期操作
add_monthw(date,i)
i可以任何整數(shù),如果i是小數(shù),會自動截取整數(shù)
next_day(date,char)
如果char的值是‘星期一’,則返回date是指定日期的下一個周一是哪天
last_day(date) 返回日期所在月的最后一天
months_between(date1,date2)---2個日期之間間隔的月份
SQL> select sysdate from dual;
SYSDATE
--------------
30-1月 -22
SQL> select add_months(sysdate,3),add_months(sysdate,-3) from dual;
ADD_MONTHS(SYS ADD_MONTHS(SYS
-------------- --------------
30-4月 -22? ? ?30-10月-21
SQL> select next_day(sysdate,'星期一') from dual;
NEXT_DAY(SYSDA
--------------
31-1月 -22
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDA
--------------
31-1月 -22
SQL> select month_between('20-5月-15','10-1月-15') from dual;
select month_between('20-5月-15','10-1月-15') from dual
? ? ? ?*
第 1 行出現(xiàn)錯誤:
ORA-00904: "MONTH_BETWEEN": 標(biāo)識符無效
SQL> select months_between('20-5月-15','10-1月-15') from dual;
MONTHS_BETWEEN('20-5月-15','10-1月-15')
---------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4.32258065
SQL> select extract(year from sysdate) from dual;
EXTRACT(YEARFROMSYSDATE)
------------------------
? ? ? ? ? ? ? ? ? ? 2022
SQL> select extract(month from sysdate) from dual;
EXTRACT(MONTHFROMSYSDATE)
-------------------------
? ? ? ? ? ? ? ? ? ? ? ? 1
SQL> select extract(day from sysdate) from dual;
EXTRACT(DAYFROMSYSDATE)
-----------------------
? ? ? ? ? ? ? ? ? ? ?30
SQL> select extract(hour from timestamp '2015-10-1 12:12:12') from dual;
EXTRACT(HOURFROMTIMESTAMP'2015-10-112:12:12')
---------------------------------------------
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?12
查看全部 -
length 計算字符的長度
select length('abc ') from dual;
contact(char1,char2)字符串連接函數(shù)----2個參數(shù)都必須是字符類型數(shù)據(jù)
與||操作符的作用相同
trim(c2 from c1) 從字符串c1中去除字符c2
ltrim(c1[,c2]) 去除頭部的c2
rtrim(c1,[,c2])
trim(c1) 去除首尾的空格的作用
replace(char,s_string,[,r_string])
省略r_string用空格替換
replace和trim不同,trim一次只可以替換一個字符,replace可以替換字符串
SQL> select concat('ab','cd') from dual;
CONC
----
abcd
SQL> select length('abcd ') from dual;
LENGTH('ABCD')
--------------
? ? ? ? ? ? ?5
SQL> select 'ab'||'cd' from dual;
'AB'
----
abcd
SQL> select trim('ab' from 'abcde') from dual;
select trim('ab' from 'abcde') from dual
? ? ? ?*
第 1 行出現(xiàn)錯誤:
ORA-30001: 截取集僅能有一個字符
SQL> select trim('a' from 'abcde') from dual;
TRIM
----
bcde
SQL> select ltrim('ababaa','a') from dual;
LTRIM
-----
babaa
SQL> select rtrim('ababaa','a') from dual;
RTRI
----
abab
SQL> select replace('abcde','a','A') from dual;
REPLA
-----
Abcde
SQL> select replace('abcde','a') from dual;
REPL
----
bcde
SQL> select replace('abcde','ab','A') from dual;
REPL
----
Acde
查看全部 -
substr 截取字符串
initcap 首字母大寫
SQL> select upper('abcd'),lower('DEW33e'),initcap('asd') from dual;
UPPE LOWER( INI
---- ------ ---
ABCD dew33e Asd
SQL> select substr('abcd',2,3),substr('abcde',2),substr('abcde',-2,1) from dual;
SUB SUBS S
--- ---- -
bcd bcde d
查看全部 -
round(n[,m])
省略m:0
m>0 小數(shù)點(diǎn)后m位
m<0 小數(shù)點(diǎn)前m位
ceil(n) 取最大值
floor(n) 取最小值
SQL> select round(23,4),round(23.45,1),round(23.45,-1);
select round(23,4),round(23.45,1),round(23.45,-1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
第 1 行出現(xiàn)錯誤:
ORA-00923: 未找到要求的 FROM 關(guān)鍵字
SQL> select round(23,4),round(23.45,1),round(23.45,-1) from dual;
ROUND(23,4) ROUND(23.45,1) ROUND(23.45,-1)
----------- -------------- ---------------
? ? ? ? ?23? ? ? ? ? ?23.5? ? ? ? ? ? ? 20
SQL> select ceil(23.45),floor(23.45) from dual;
CEIL(23.45) FLOOR(23.45)
----------- ------------
? ? ? ? ?24? ? ? ? ? ?23
SQL> select abs(23.45),abs(-23.45),abs(0) from dual;
ABS(23.45) ABS(-23.45)? ? ?ABS(0)
---------- ----------- ----------
? ? ?23.45? ? ? ?23.45? ? ? ? ? 0
SQL> select mod(5,2) from dual;
? MOD(5,2)
----------
? ? ? ? ?1
SQL> select mod(5,null) from dual;
MOD(5,NULL)
-----------
SQL> select power(2,3),power(null,2) from dual;
POWER(2,3) POWER(NULL,2)
---------- -------------
? ? ? ? ?8
SQL> select sqrt(16) from dual;
? SQRT(16)
----------
? ? ? ? ?4
查看全部 -
函數(shù)的作用
方便數(shù)據(jù)統(tǒng)計
處理查詢結(jié)果
函數(shù)分類
內(nèi)置函數(shù)
自定義函數(shù)
數(shù)值函數(shù)----數(shù)值進(jìn)行操作的函數(shù)
字符函數(shù)----
日期函數(shù)----
轉(zhuǎn)換函數(shù)----數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換
在查詢語句中使用函數(shù)
將小寫字母轉(zhuǎn)換成大寫字母
查詢時間間隔
四舍五入
查看全部 -
5.轉(zhuǎn)換函數(shù)
5.1日期轉(zhuǎn)換成字符:
to_char(date,fmt,params)
date:將要轉(zhuǎn)換的日期:
fmt:轉(zhuǎn)換的格式(見截圖)
params:日期的語言,通常都不寫,取默認(rèn)
select sysdate from dual;--2021/5/12 0:48:37
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;--2021-05-12 00:48:24
5.2字符轉(zhuǎn)換成日期:
to_date(char,fmt,params):按照系統(tǒng)默認(rèn)格式顯示日期
select to_date('2021-05-12','YYYY_MM_DD') from dual;--2021/5/12
5.3數(shù)字轉(zhuǎn)換成字符:
to_char(number,fmt);
fmt格式比如下面這種:
9:顯示數(shù)字并忽略前面的0
0:顯示數(shù)字,位數(shù)不足,用0補(bǔ)齊
.或D:顯示小數(shù)點(diǎn)
,或G:顯示千位符
$:美元符號
s:加正負(fù)號(前后都可以,但是不能同時都加上)
select to_char(12345.678,'$99,999.999') from dual;-- $12,345.678
轉(zhuǎn)換的時候注意小數(shù)點(diǎn),否則會四舍五入
5.4字符轉(zhuǎn)換成數(shù)字:
to_number(char,fmt)
fmt是轉(zhuǎn)換的格式,可省略
select to_number('$1,000','$9999') from dual;----1000
查看全部 -
4.日期函數(shù)
系統(tǒng)時間:sysdate
日期操作:
add_months(date,i):
i為任何一個整數(shù),若為小數(shù),則自動取整,若為負(fù)數(shù),則減去相應(yīng)月數(shù);
select add_months(sysdate,3) from dual;
next_day(date,char);
如果char值是'星期一',則返回date指定日期的下周一是哪天;
select next_day(sysdate,'星期一') from dual;
last_day(date):
返回某月最后一天
extrcat(date from datetime):(ORACLE貌似不支持)
返回datetime相應(yīng)的日期部分,若返回日期,則寫成year from datetime;
select extrcat(day from sysdate) from dual
查看全部 -
3.字符函數(shù)
3.1? 大小寫轉(zhuǎn)換函數(shù):
upper(char):轉(zhuǎn)換為大寫;? ? lower(char):轉(zhuǎn)換為小寫;? ? initcap(char)將首字母轉(zhuǎn)換為大寫;
(用處:比如注冊用戶名時不區(qū)分大小寫)
3.2 獲取子字符串函數(shù):substr(char,m,n)從m位開始截取n個字符串
(注:m=0從首字母開始截取,m<0 從后面開始截取)
eg:
select substr('60040019951001xxxx',7,8) from dual;
select substr('60040019951001xxxx',-12,8) from dual;
3.3 獲取字符串長度函數(shù):
length(char);若char單引號內(nèi)有空格,也會被計算在內(nèi)。
3.4 字符串連接函數(shù):
concat(char1,char2);與||操作符作用一樣
select concat('ab','cd') from dual;
select 'ab'||'cd' from dual;
3.5 去除子串函數(shù):
trim(c2 from c1);從字符串c1中去除字符c2
select trim('a' from? 'abcdea') from dual;--會去除所有帶a的
ltrim(c1,c2);從c1中去除c2
select ltrim('extend#123456' , 'extend#') from dual;
rtrim(c1,c2);
select rtrim('abccfdaa' , 'a') from dual;--會將u右側(cè)遇到的a都去除
trim(c1):表示去除首位空格,同理其余兩個為去除左/右的空格;
3.6 替換函數(shù):
replace(char,string1,string2)
查看全部 -
1.數(shù)值函數(shù):
四舍五入函數(shù):
round(n,m),省略m時:0,m>0,小數(shù)點(diǎn)后幾位,m<0 小數(shù)點(diǎn)前幾位;
取整函數(shù):
ceil(n):取最大值;(這里如果有小數(shù),就會+1,eg:23.45取24)
floor(n):取最小值(eg:23.45取23)n
絕對值:ABS(n):
取余:MOD(M,N);若n為null,則結(jié)果也為空
eg:select? from mod(acc_code,50) from dual;
power(m,n):m 的n次冪,2^3=8
sort(n):平方根
2.三角函數(shù)
查看全部 -
--在查詢中使用函數(shù)
--員工信息表
create table xcc_users (
id varchar2(10),name varchar2(11),cardid varchar2(18),
deptno varchar2(10),regdate date,ace number(4));
--插入一條數(shù)據(jù)
insert into xcc_users (id,name,cardid,deptno,regdate,ace)values('1','abc','123456789012345678','01','22-5月-15','25');
select * from xcc_users;
1.在員工信息表查詢出員工的生日
select substr(cardid,7,8) from xcc_users;
2.將部門號全部替換成'信息技術(shù)'
select replace(deptno,'01','信息技術(shù)')from xcc_users;
3.將員工信息表中的年齡字段與10取余數(shù)
select mod(ace,10) from xcc_users;
4.取得員工入職的年份
select extract(year from regdate) from xcc_users;
5.查詢出5月份入職的員工信息
select * from xcc_users where extract(month from regdate)=5;查看全部 -
-- 轉(zhuǎn)換函數(shù) - 對不同數(shù)據(jù)的轉(zhuǎn)換
1.日期轉(zhuǎn)換字符的函數(shù) ?
TO_CHAR(轉(zhuǎn)換的日期[,轉(zhuǎn)換的格式[,日期的語言]])
默認(rèn) 格式:DD-MON-RR
--日期的語音 一般不用指定
格式有 YY YYYY YEAR,MM MONTH ,DD DAY ,HH24 HH12,MI SS
?select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;? --示例
2.字符轉(zhuǎn)換成日期的函數(shù)
TO_DATE(要轉(zhuǎn)換的日期[,要轉(zhuǎn)換的格式[,日期的語言]])
select to_date('2015-11-11','yyyy-mm-dd hh24:mi:ss') from dual;
3.數(shù)字轉(zhuǎn)換字符的函數(shù)
TO_CHAR (要轉(zhuǎn)換的數(shù)字,[,轉(zhuǎn)換格式])
-- 轉(zhuǎn)換格式 9:顯示數(shù)字并忽略前面的0 ,0:顯示數(shù)字,位數(shù)不足,用0補(bǔ)齊
-- .或D:顯示小數(shù)點(diǎn) , ,或G:顯示千位數(shù) $:美元符號, S加正負(fù)號(前后都可以)
select to_char(1234.654) from? dual;
select to_char(1234.654,'s$99,90.9999') from? dual;
4.字符轉(zhuǎn)換成數(shù)字的函數(shù)
TO_NUMBER(要轉(zhuǎn)換的字符,[,格式])
select to_number('$1,000','$9999') from dual;查看全部 -
-- 系統(tǒng)時間
SYSDATE? 默認(rèn)格式: DD-MON-RR? 日月年
SELECT SYSDATE FROM DUAL; --示例
-- 日期操作
1.用于添加指定的月份,返回在指定日期添加的月份
ADD_MONTHS(date,i) ?
--i如果是小數(shù),則截取整數(shù)部分,如果負(fù)數(shù),相對于為原日期監(jiān)區(qū)月份
select add_months(sysdate,3),add_months(sysdate,-3) from dual;?? --示例
?
?2.?? NEXT_DAY(date,char) 返回下一個星期幾是哪天
--date 計算的日期 ,
--char 星期幾 如果char的值是星期一,則返回date指定日期的下周一是哪天
select next_day(sysdate,'星期一') from dual; --示例
3.LAST_DAY(date) 用于返回date所在月的最后一天
select last_day(sysdate) from dual;
4. MONTHS_BETWEEN(date1,date2) 表示兩個日期之間相隔的月份
select months_between(sysdate,'01-1月-21') from dual;
5.EXTRACT(date from datetime) 返回 年或月或日,時/分/秒等
--date 要返回 datetime 的年 year或月 month 或日day
-- datetime 計算的日期時間
?select extract(year from sysdate) from dual; --示例 返回日期年份
? select extract(month from sysdate) from dual; --示例 返回月份
? select extract(day from sysdate) from dual; --示例 返回日
?select extract(hour from timestamp '2015-10-1 17:25:13') from dual; --返回 小時查看全部 -
--獲取字符串長度函數(shù)
1.?? length? 字符串長度,空格也包括
select length('a bc ') from dual;
2.? CONCAT(char1,char2) 字符串連接函數(shù),與||操作符的作用一樣
?select concat('ab','cd')from dual;--示例
select 'ab'||'cd' from dual;--示例
3.TRIM(c2 FROM c1)去除子串函數(shù) ,表示從字符串c1中去除字符c2 ,一次只能去除一個字符
select trim('a' from 'abcd') from dual;--示例
select trim(' a? 3 ') from dual;--示例 只有一個參數(shù),可以去除首尾空格
3.1? ltrim(c1[,c2]) 去除子串函數(shù) ,表示從字符串c1中去除字符c2 ,可以去除多個,只有一個參數(shù),可以去除左邊空格
select ltrim('abcabcf' ,'aebcd') from dual;--示例
3.2 RTRIM(c1[,c2]) 去除子串函數(shù) ,表示從字符串c1中去除字符c2 ,這個是去除尾部的第一個,只有一個參數(shù),可以去除右邊空格
select rtrim('abcabcfd' ,'abcd') from dual;--示例
4.替換函數(shù) REPLACE(char,s_string[,r_string]) 省略r_string用空格替換
select replace('abced','a','A') from dual;查看全部 -
--?? 字符函數(shù)
-- 1.大小寫轉(zhuǎn)換函數(shù)
UPPER(char) 小寫轉(zhuǎn)大寫 ,LOWER(char) 大寫轉(zhuǎn)小寫, INITCAP 首字母轉(zhuǎn)換為大寫 ;
SELECT UPPER('Abc'),lower('ADc'),initcap('abD') FROM dual; --示例
獲取/截取,子字符串函數(shù) ?
SUBSTR(char,[m[,n]])? ?
--char 源字符串,m 取子串的開始位置,n 截取子串的位數(shù)
-- n可以省略,當(dāng)n省略時表示從m的位置截取到末尾
--當(dāng)M為零,從頭部開始截取,M為負(fù)數(shù),從尾部開始截取
SELECT SUBSTR('abcdefg',0,1),SUBSTR('abcdefg',1,2),substr('abcdefg',-3,3) FROM DUAL;查看全部 -
oracle里的一個特殊的表,dual表,有一些函數(shù)必須指定目標(biāo)表,可以寫這個,這個里面是一個一行一列的表;
-- 數(shù)值函數(shù)
-- 1.四舍五入
--ROUND(n,[,m])
--省略m:0
--m>0:小數(shù)點(diǎn)后m位,m<0:小數(shù)點(diǎn)前m位
--n表示要進(jìn)行四舍五入的值,m表示保留小數(shù)點(diǎn)后幾位或前幾位
select round(23.4),round(23.45,1),round(23.45,-1) from dual? ;
select * from dual;
-- 2.取整函數(shù)
CEIL(n) 取最大值,向上取整,后面多大都會進(jìn)一位
FLOOR(n) 取最小值,向下取整,后面多小都會進(jìn)一位
select ceil(23.45),floor(23.45) from dual;
-- 3.常用函數(shù)
ABS(n) 取絕對值,如果是正就返回本身,負(fù)數(shù)就返回正的,0還是0;
select abs(23.45),abs(-23) from dual;
MOD(m,n)? 取余數(shù) ,m表示除數(shù),n表示被除數(shù) ,表示m/n,如果m或n有一個是null值,返回null;
select mod(5,2),mod(10,null),mod(10,2) from dual;
POWER(m,n) 表示返回m的n次冪
select power(2,3),power(null,2) from dual;
SQRT(n) 表示平方根,sqrt(16),結(jié)果是4
select sqrt(16) from dual;
-- 4.三角函數(shù)
正弦值 SIN(N),反弦值 ASIN(N)
余弦值 COS(N),反余弦值 ACOS(N)
正切值 TAN(N),反正切值 ATAN(N)查看全部 -
函數(shù)的作用:方便數(shù)據(jù)的統(tǒng)計,處理查詢結(jié)果
函數(shù)分類
數(shù)據(jù)庫自帶函數(shù)/自定義函數(shù)
還可分為
數(shù)值函數(shù),字符函數(shù),日期函數(shù),轉(zhuǎn)換函數(shù)
查看全部 -
使用小技巧
查看全部 -
補(bǔ)充一下“
replace 是整體替換
translate 是逐個替換
replace('qwertra','we','W') translate('qwertra','we','W')
執(zhí)行體會一下
查看全部 -
數(shù)值函數(shù)、字符函數(shù)、日期函數(shù)、轉(zhuǎn)換函數(shù)查看全部
-
字符函數(shù)總結(jié)
查看全部 -
extract()查詢指定日期的信息查看全部
-
extract(year from regdate)取日期年份例子查看全部
-
mod()取余數(shù)例子查看全部
舉報