天天看点

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 女