SQL 函数

sql函数

character函数  String

1.INITCAP 首字母大小

      select initcap(address) address from student;

      select initcap('ni hao') from dual;   --dual虚拟表  '数据列名-数据

    2.LTRIM 从左往右截取

      select ltrim('ni hao ni', 'ni') from dual;    //hao ni

    3.RTRIM 从右往左截取

      select rtrim(‘hao ni hao', 'hao') from dual;  //hao ni

    4.CONCAT  并置运算符 || 

      select concat(stuNo, concat(' ', name)) from student;

      select stuNo || ' ' || name as info from student;

    5.SUBSTR  subString(str, begin, end)

      select substr('nihao hi helloi', 0, 10) from dual;   --包括第一位是0,也包括第10位

    6.INSTR

      select instr('nihao', 'ni') from dual;

    7.LENGTH

      select length(address) from student;

    8.RPAD

      insert into school values(rpad(88, 8, '0'), '南京大学');

---------------------------------------------------------------------------------------------------------------------------------

重要:   

   9.LOWER

      select lower('HELLO') from dual;

  10.UPPER 

      select upper('hello') from dual;

      String inputEmail = "Bob.wang";  -- 用户名不区分大小写

      select * from users where upper(email) = upper(inputEmail);

      select * from student where upper(address) = upper('China Wuxi New Area');

  11.LPAD  --  insert PK 序列sequence

      insert into school values(lpad(88, 8, '0'), '江苏大学');

      insert into school values('S'||lpad(89, 7, '0'), '江苏科技大学');

 ---------------------------------------------------------------------------------------------------------------------------------

 数值函数  Math

    1.ABS    绝对值

      select abs(-10) from dual;

    2.CEIL >= 最小整数

      select ceil(-10.1) from dual;

    3.FLOOR  <= 最大整数

      select floor(-10.1) from dual;

    

4.POWER  求幂

      select power(10, 4) from dual;

    5.MOD    取余

      select mod(-10, 3) from dual;

    6.SQRT   开方

      select sqrt(100) from dual;

    7.TRUNC  直接截取

      select TRUNC(19.99) from dual; 

      select TRUNC(19.99281, 3) from dual;

    8.ROUND  四舍五入

      select round(19.99) from dual;        -- 20

      select round(19.99281, 3) from dual;  -- 19.993

  


 

日期函数

   1.系统时间

      select sysdate from dual;

   2. ADD_MONTHS  

计划  2014-11-25开始project做两个月 得出开始日期  结束日期

          select '25-11-14' as "开始时间", add_months('25-11-2014', 2) as "结束时间" from dual;

   3.GREATEST

      select greatest('25-11-14', sysdate) from dual; 

 GREATEST 返回值列表中最大值

              格式: GREATEST(value1, value2, value3, ...)

              含义: 返回value列表最大的值。

                          Value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

                           value值列表中有一个为NULL,则返回NULL值。

 

   4.LEAST

      select least('25-11-14', sysdate) from dual; 

LEAST 返回值列表中最小值

            格式: LEAST(value1, value2, value3, ...)

            含义: 返回value列表最小的值。

                        value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

                         value值列表中有一个为NULL,则返回NULL值。

 

   5.LAST_DAY  月份最后一天日期

      select last_day(sysdate) from dual;

   6.MONTHS_BETWEEN返回两个日期之间的月份数。

      select MONTHS_BETWEEN('25-11-14', sysdate) from dual; 

   

7.NEXT_DAY 下一个星期几日期  1~7  ~

      select next_day(sysdate, 6) from dual;

   8.ROUND日期中的四舍五入   (上半月;下半月)

      select round(sysdate, 'month') from dual; 

   9.TRUNC  截取

      select trunc(sysdate, 'year') from dual;   //截取到年份 res01-0114

 


 

 
格式化函数

    1.隐式转换

      此转换类型中,数据类型将根据SELECT语句中函数的要求自动进行转换。 

      select add_months('10-10-14', 1) from dual;

      select * from school where schoolcode = '00000088';

      select * from facutly where facutlyNo = 1;   -- 列中数据应为数字的char字符

    2.显式转换 

      此转换类型中,数据类型的转换通过一些预定义函数完成。转换函数有:

        日期格式化函数

          TO_DATE 

            insert into student(stuNo, name, birthDate, majorNo) 

                        values('S9722', 'John', to_date('1995-10-10', 'yyyy-mm-dd'), 'M0003');

          TO_CHAR 

            select birthDate from student;

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

    

 

 

 

 

 

  3.数值格式化函数

          to_number   -- 列中数据应为数字的char字符

          select to_number(schoolCode) from school where schoolcode = '00000088';

  4. nvl(1, 2)   若值1为空  显示值2的数据   若值1不为空显示自身值 

    select stuNo, name, nvl(javasescore, 60) from student;

    

  5Coalesce函数  Coalesce (exp_name1, exp_name2.. exp_n)   若表达式值不为空显示

    select coalesce('', '', '', '1', 'value') from dual;

 

 


 

 

/*

 * 多行函数 

 *  把多行数据组合为一行

 */

 

 

  1. count 统计 count(*|列名)--列数据为null不参与多行函数操作
  2. select count(*)from student;--有多少学生
  3. select count(javaSEScore)from student;--有多收学生参与考试
  4. select count(*)from student where majorno ='M0001';
  5. sum
  6. select sum(javaSEScore)from student;
  7. select sum(salary)from employee;
  8. avg
  9. select avg(javaSEScore)from student;
  10. max
  11. select max(javaSEScore)from student;
  12. min
  13. select min(javaSEScore)from student;
  14. stddev 偏差
  15. select stddev(javaSEScore)from student;
  16. variance 方差
  17. select variance(javaSEScore)from student;
  18. --select name, count(*)from student
 

 

 

 

 

 

 

 





posted @ 2016-09-21 14:45  无丑不成戏如人生  阅读(770)  评论(0编辑  收藏  举报