上一篇:Oracle入門學習二 學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=26 字元串函數:length、upper、lower、initcap、 concat、instr、replace。 -- dual 常量表,沒什麼意義,就語法規則 ...
上一篇:Oracle入門學習二
學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=26
字元串函數:length、upper、lower、initcap、 concat、instr、replace。
-- dual 常量表,沒什麼意義,就語法規則 -- 獲取字元串長度 select length('我是誰?') from dual; select length('abcd') from dual; -- 全部變成大寫 select upper('abcdDDDFFF') from dual; -- 全部變成小寫 select lower('DDAFAFA') from dual; -- 首字母大寫化,後面的也會變成小寫 select initcap('abcdDDD') from dual; -- 從第一個字元開始截取三個字元 select substr('123456789',1,3) from dual; -- 從第三個字元開始截取三個字元 select substr('123456789',3,3) from dual; --字元串連接函數 select concat('ab','dc') from dual; --替換函數 select replace('我恨你','恨','愛') from dual; --查找字元串出現的首位置 select instr('java','va') from dual;
數字函數:round、trunc。
--四捨五入的取小數位 select round(3.14159,3) from dual; select round(3.14159,2) from dual; --截取小數位,但沒有四捨五入 select trunc(3.14159,3) from dual;
轉換函數:to_char、to_date、to_number
--數字轉字元串 --L指本地貨幣 --$指美元 select to_char(5006,'L9999.99') from dual; select to_char(5006,'$9999.00') from dual; select to_char(5006.989,'9999.00') from dual; --字元串轉日期 select to_date('2019-05-12','yyyy-mm-dd') from dual; select to_date('2019/05/12','yyyy/mm/dd') from dual; select to_date('2019/05/12 12:23:23','yyyy/mm/dd hh:mi:ss') from dual; --字元串轉數字 select to_number('500')+800 from dual;
plsql基本語法熟悉之後,可以配置一下快捷鍵提高效率:https://jingyan.baidu.com/article/215817f7e1efbb1eda1423ef.html
聚合函數:處理多個數據的函數,常見的有max、min、count、sum、avg。
--列有空也不影響 select max(salary) from staff; select min(salary) from staff; select max(bonus) from staff; select sum(bonus) from staff; select avg(bonus) from staff; --count(某列),當該列值不為空才列入計算 select count(bonus) from staff; --總行數 select count(*) from staff;
分組函數:group by,根據一列或多列分組,使用聚合函數同級該組的數據。
where用來篩選from字句產生的行,group by用來分組where字句之後的數據,having用來過濾分組之後的數據。
--單列分組 select name,count(*) from staff group by name; --多列分組 select department,salary,count(*) from staff group by department,salary order by department desc;
--對分組之後的數據,再次進行條件過濾,使用having關鍵字而非where select department,salary,count(*) from staff group by department,salary having count(*)<8 order by department desc ;
--對分組之後的數據,再次進行條件過濾,使用having關鍵字而非where select department,salary,count(*) from staff where salary>40000 group by department,salary having count(*)<8 order by department desc ;
子查詢:查詢套查詢。執行順序先子後父。
select * from student where born_date > (select born_date from student where student_name = 'bibi')