SQL语言和常用函数(二)

2014-11-24 13:21:48 · 作者: · 浏览: 1
于字符串连接。语法结构:CONCAT(c1,c2)

接受两个参数,将第二个参数连接到第一个参数末尾。假如第二个参数为NULL,则返回第一个参数,如果第一个参数为NULL,则函数返回第二个参数,假如两个参数都是NULL则返回NULL。

示例1:为学生年龄追加“岁”单位。

select name,concat(age,'岁') from student 

或者:

select name,age||'岁' from student 

注意:Oracle的CONCAT函数只允许两个参数,因此涉及多个字符串连接时只能使用CONCAT嵌套来实现,或者使用“||”

NVL函数语法:NVL(expr1,expr2);接受两个参数,假如第一个参数不为NULL时,函数返回第一个参数,假如第一个参数为NULL时,函数返回第二个参数.

示例2:查询学生表相关信息,对没有年龄的学生默认显示“-1”

select name,NVL(age,-1) from student

数字函数,对数字数据进行一些算数运算的函数。

TRUNC函数语法:TRUNC(column|expression,n)这个函数是截取函数,用于对指定的数值进行截取操作。第一个参数是要截取的数值,可以是数据库表中的某个字段,有或者是某个表达式。第二个参数n是要截取的位数。

注意:

1、此函数可以只有一个参数,那么此时第二个参数=将使用缺省值0。

2、n可以是正整数,也可以是负整数,正整数表示截取小数点后面的位数,负整数表示截取小数点前面的位数。

dual表:dual表是一个虚拟表,在Oracle中dual里面只包含一条记录,并且任何用户都可以读取,此表被我们通常用来构成我们的语法结构。

示例1:

SELECTTRUNC(45.926) FROM dual; 结果:45

SELECTTRUNC(45.926,2) FROM dual; 结果:45.92

SELECTTRUNC(45.926,-1) FROM dual; 结果:40

ROUND函数语法:ROUND (column|expression,n)是四舍五入函数。用于对指定的数值进行四舍五入操作。第一个参数是要四舍五入的数值。第二个参数n是要四舍五入的位数。

注意:

1、此函数可以只有一个参数,那么此时第二个参数将使用缺省值0.

2、n额可以是正整数,也可以是负整数,正整数时表示四舍五入取小数点后面的位数,为负整数时表示四舍五入小数点前面的位数。

示例2:

SELECTROUND(45.926) FROM dual; 结果:46

SELECTROUND(45.926,2) FROM dual; 结果:45.93

SELECTROUND(45.926,-1) FROM dual; 结果:50

示例3:检索商品表时,在检索结果中对商品价格进行四舍五入处理,(精确到小数点后两位)

SELECTROUND(p.price,2) AS ”四舍五入后的价格”,p.name AS “商品名称” FROM es_product p;

日期函数,主要操作DATE类型数据。

它的输入参数大部分为DATE类型,并且输出参数也为DATE类型。

EXTRACT用于返回日期中的部分日期值。

例如:1、获取日期中的年

select extract(year from sysdate) from dual

2、获取日期中的月

select extract(month from sysdate) from dual

2、获取日期中的日

select extract(day from sysdate) from dual

例:检索学生表时,对检索结果中的入学时间使用年-月-日格式显示

select extract(year from startdate) || '-' || extract(month from startdate) || '-' ||
       extract(day from startdate)
  from student

转换函数:用于操作多重数据类型,它的主要作用是把数据从一种数据类型转换成另一种数据类型

TO_CHAR函数用于将日期数字等转换为字符串

日期转换为字符串的语法:TO_CHAR(date)或TO_CHAR(date,’format_model’);

示例:检索学生表时,对检索结果中的入学时间使用年-月-日格式显示

select to_char(startdate,'yyyy-mm-dd') from student

TO_DATE语法:TO_DATE(date,’format_model’)

第一个参数是要转换的日期字符串,第二个参数是日期字符串的时间格式。

注意:日期格式要和日期字符串对应否则会出现转换错误。

示例:对学生入学日期进行比较检索,检索2014年8月份上学的学生

select *
  from student
 where to_date('2014-7-31', 'yyyy-mm-dd') < startdate
   and startdate < to_date('2014-9-1', 'yyyy-mm-dd');

聚合函数:他的数据源于多行数据,而函数的返回值一般是单一的结果。

以下示例使用商品表,

分组的语法:GROUP BY column; column是分组依据字段

示例:查询商品表,根据商品类别分别求商品数量

select SUM(p.stockcount),p.sort_id from es_product p GROUP BY p.sort_id;

SUM函数语法:SUM(column),接受一个参数,表示对指定列进行求和操作。

示例1:获得商品表中所有商品的总数量

select sum(p.stockcount) from es_product p;

示例2:获得商品表中每类商品的总数量

select sum(p.stockcount),p.sort_id from es_product p group by p.sort_id;

COUNT函数的语法:count(column);表示求指定表中列的总行数

示例1:获得商品表中总的记录数。

select count(p.stockcount) fron es_product p;

示例2:获得每类商品在商品表中的总记录数

select count(p.stockcount),p.sort_id from es_product p group by s.sort_id;

MAX函数语法MAX(column),表示求指定列中的最大值

示例1:查询商品表中最贵商品价格

select  MAX(p.price) from ex_product p;

示例2:查询每类商品中最贵的商品价格

select MAX(p.price),p.sort_id from es_product p group by p.sort_id;