天天看點

oracle_函數學習

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 女