concat('admin','abce')
SQL> select concat('admin','abce')as 連接配接結果 from dual;
連接配接結果
---------
adminabce
SQL> select concat(null,'abce')as 連接配接結果 from dual;
連接配接
----
abce
SQL> select concat('admin',null)as 連接配接結果 from dual;
連接配接
-----
admin
SQL> selectconcat(concat('admin','abce'),'1234') as 結果 from dual;
結果
-------------
adminabce1234
SQL> select concat('admin','abce','1234') as 結果 fromdual;
select concat('admin','abce','1234') as 結果 fromdual
*
第 1 行出現錯誤:
ORA-00909: 參數個數無效
已選擇16行。
昨天學過的:更改列寬
SQL> column p.name(name也不對,應該是所顯示的列名,即商品名稱和商品價格,如下:)format a8;
SQL> column p.price format a8;
SQL> select p.name as 商品名稱,p.price||'元' as 商品價格 from es_product p;
(這段語句對顯示結果無影響)
SQL> column 商品名稱 format a12;
SQL> column 商品價格 format a12;
SQL> select p.name as 商品名稱 ,p.price||'元' as 商品價格 fromes_product p;
商品名稱 商品價格
------------ ------------
平凡的世界 45.9元
明朝那些事 15.9元
活着 25.9元
白鹿原 35.9元
紀念雷鋒 65.9元
Nike鞋子 960元
Nike褲子 259元
美美裙 45.9元
阿童木情侶裝 520元
真維斯系列 102元
餅幹 10元
商品名稱 商品價格
------------ ------------
進階水果 36元
伊利牛奶 49元
冰紅茶 5.9元
果丹皮 14元
李甯 90元
已選擇16行。
SQL> select p.name as 商品名稱 concat(p.price,'元')as 商品價格 from es_product p;
select p.name as 商品名稱 concat(p.price,'元') as 商品價格from es_product p
*
第 1 行出現錯誤:
ORA-00923: 未找到要求的 FROM 關鍵字
SQL> select p.name as 商品名稱 ,concat(p.price,'元') as 商品價格from es_product p;
商品名稱 商品價格
------------ ------------
平凡的世界 45.9元
明朝那些事 15.9元
活着 25.9元
白鹿原 35.9元
紀念雷鋒 65.9元
Nike鞋子 960元
Nike褲子 259元
美美裙 45.9元
阿童木情侶裝 520元
真維斯系列 102元
餅幹 10元
商品名稱 商品價格
------------ ------------
進階水果 36元
伊利牛奶 49元
冰紅茶 5.9元
果丹皮 14元
李甯 90元
已選擇16行。
nvl(description,'沒有說明')
SQL> column 商品描述 format a12;
SQL> select name, nvl(description,'沒有說明') as 商品描述from es_product;
NAME 商品描述
------------ ------------
平凡的世界 是一部現實語
言小說
明朝那些事 一部小說
活着 一部現實語言
小說
白鹿原 是一部小說
紀念雷鋒 是一部小說
Nike鞋子 我活我自在
Nike褲子 潮流代表
NAME 商品描述
------------ ------------
美美裙 青春少女的最
愛
阿童木情侶裝 情侶系列
真維斯系列 真正的青春範
餅幹 好吃的餅幹
進階水果 水果中的極品
伊利牛奶 你生命活力的
來源
冰紅茶 冰爽一夏
NAME 商品描述
------------ ------------
果丹皮 酸甜可口
李甯 上衣
已選擇16行。
SQL>
截取:trunc
SQL> select trunc(45.697) from dual;
TRUNC(45.697)
-------------
45
SQL> select trunc(45.697,2) from dual;
TRUNC(45.697,2)
---------------
45.69
SQL> select trunc(45.697,-1) from dual;
TRUNC(45.697,-1)
----------------
40
SQL> select trunc(45.697,-2) from dual;
TRUNC(45.697,-2)
----------------
SQL>
SQL>-- 四舍五入--
SQL> select round(45.697) from dual;
ROUND(45.697)
-------------
46
SQL> select round(45.697,1) from dual;
ROUND(45.697,1)
---------------
45.7
SQL> select round(45.697,-1) from dual;
ROUND(45.697,-1)
----------------
50
SQL> select round(45.697,-2) from dual;
ROUND(45.697,-2)
----------------
SQL> select round(43.697,-1) from dual;
ROUND(43.697,-1)
----------------
40
獲得系統時間:sysdate,截取年extract(year from sysdate)
SQL> select extract(year from sysdate)||'年'||extract(month fromsysdate)||'月'||extract(day from sysdate)||'日'
2 as 日期 from dual;
日期
--------------------------------------------------------------------------------
2014年7月9日
SQL> column 日期 format a15;
SQL> select extract(year from sysdate)||'年'||extract(monthfrom sysdate)||'月'||extract(day from sysdate)||'日'
2 as 日期 from dual;
日期
---------------
2014年7月9日
SQL>
将時間轉化成字元串:
SQL> select to_char(p.saledate,'yyyy-mm-dd') as 日期 from es_productp;
日期
---------------
2012-04-01
2012-02-03
2012-04-04
2012-01-12
2012-01-03
2012-02-23
2012-01-08
2011-07-01
2012-04-06
2012-03-05
2012-03-17
日期
---------------
2012-04-07
2012-04-02
2012-01-19
2012-02-19
2014-07-08
已選擇16行。
見字元串轉化成時間:
SQL> column description format a15;
SQL> column content format a15;
SQL> select * from es_product p
2 where to_date('2012-2-29','yyyy-mm-dd')< p.saledate and
3 p.saledate <= to_date('2012-3-31','yyyy-mm-dd');
ID SORT_ID NAME PRICE DESCRIPTION CONTENT
---------- ---------- ------------ ------------------------- ---------------
SALEDATE STOCKCOUNT
-------------- ----------
10 2 真維斯系列 ########## 真正的青春範 穿出你的青春和
美麗
05-3月 -12 100
11 3 餅幹 ##########好吃的餅幹 代替早餐
17-3月 -12 100
SQL> column price format 999;
SQL> select * from es_product p
2 where to_date('2012-2-29','yyyy-mm-dd')< p.saledate and
3 p.saledate <= to_date('2012-3-31','yyyy-mm-dd');
ID SORT_ID NAME PRICE DESCRIPTION CONTENT
---------- ---------- ------------ -------------------- ---------------
SALEDATE STOCKCOUNT
-------------- ----------
10 2 真維斯系列 102 真正的青春範 穿出你的青春和
美麗
05-3月 -12 100
11 3 餅幹 10 好吃的餅幹 代替早餐
17-3月 -12 100
聚合函數:
1、 求和函數:sum
SQL> select sum(age) from stu;
總年齡
----------
75
2、 計數函數:count
SQL> select count(*) from stu;
總(年齡列所包含值的個數)人數
----------
4
SQL> select count(age) from stu;
總人數
----------
4
如果我把count的參數列某一列的值改成null 則其結果也會發生變化
即count在計數是不計算空值。
SQL> update stu set birthday=null where id=1;
已更新 1 行。
SQL> select count(birthday) as 人數 from stu;
人數
----------
3
SQL>
3、 求平均函數:avg
SQL> select avg(age) from stu;
平均值
----------
18.75
4、 求最大值、最小值函數
SQL> select max(age) as 最大年齡,min(age) as 最小年齡
2 from stu;
最大年齡 最小年齡
---------- ----------
20 18
分組:groupby
SQL> select sum(s.age) as 總年齡 ,s.sex
2 from stu s
3 group by s.sex;
總年齡 SE
---------- --
38 男
37 女
SQL> select s.name sum(s.age) as 總年齡 ,s.sex
2 from stu s
3 group by s.sex;
select s.name sum(s.age) as 總年齡 ,s.sex
*
第 1 行出現錯誤:
ORA-00923: 未找到要求的 FROM 關鍵字
SQL> select s.name sum(s.age) as 總年齡 ,s.sex
2 from stu s
3 group by s.sex,s.name;
select s.name sum(s.age) as 總年齡 ,s.sex
*
第 1 行出現錯誤:
ORA-00923: 未找到要求的 FROM 關鍵字
SQL> select s.name,sum(s.age) as 總年齡 ,s.sex
2 from stu s
3 group by s.sex,s.name;
NAME 總年齡 SE
------------ ---------- --
譚小志 18 男
張三 20 男
張虹 19 女
董小宛 18 女
SQL> select avg(s.age) as 平均年齡,s.sex
2 from stu s
3 group by s.sex;
平均年齡 SE
---------- --
19 男
18.5 女
SQL> select count(*) as 人數 from stu;
人數
----------
4
SQL> select count(*) as 人數 ,sex
2 from stu
3 group by sex;
人數 SE
---------- --
2 男
2 女