1.SQL函数:

单行函数、多行函数

单行函数:
       操作数据对象
       接受参数返回一个结果
       只对一行进行变换
       每行返回一个结果
       可以转换数据类型
       可以嵌套
       参数可以是一列或一个值

2.单行函数分类

字符、数字、日期、转换、通用函数

3.字符函数

(1)大小写控制函数:LOWER、UPPER、INITCAP

LOWER('SQL Course')                  sql course
UPPER('SQL Course') ——> SQL COURSE
INITCAP('SQL Course') Sql Course
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'shirayner';

(2)字符控制函数

CONCAT('Hello'     ,'World')                HelloWorld
SUBSTR('HelloWorld', 1 , 5 ) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld' ,'W') ——> 6
LPAD(salary , 10 , '*') *****24000 (用*左填充)
RPAD(salary , 10 , '*') 24000*****
TRIM('H' FROM 'HelloWorld') elloWorld
REPLACE(‘abcd’ , ’b’ , ’m’) amcd

4.数字函数

个位数的下标为0

ROUND: 四舍五入   

ROUND(45.926)  = ROUND(45.926,0)                 46

ROUND(45.926, 2)                                                  45.93

TRUNC: 截断

TRUNC(45.926)  =TRUNC(45.926,0)                   46
                                       TRUNC(45.926, 2)                                                   45.92

TRUNC(45.926, -2)                                                  0

TRUNC(45.926, -1)                                                  40                              (保留十位,后面截去,补0)

MOD: 求余
                                       MOD(1600, 300)                                                      100

MOD(salary, 5000)

5.日期函数

Oracle 中的日期型数据实际含有两个值: 日期和时间。

函数SYSDATE 返回:  日期、时间

(1)日期的数学运算:

在日期上加上或减去一个数字结果仍为日期。

两个日期相减返回日期之间相差的天数。        (日期不允许做加法运算,无意义)

可以用数字除24来向日期中加上或减去天数。

(2)日期函数

MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')    : 两个日期相差的月数                                     19.6774194

ADD_MONTHS ('11-JAN-94',6)                               : 向指定日期中加上若干月数                          '11-JUL-94'

NEXT_DAY ('01-SEP-95','FRIDAY')                        : 指定日期的下一个星期 * 对应的日期             '08-SEP-95'

NEXT_DAY ('01-SEP-95',1)                                         指定日期的下一个星期1对应的日期

LAST_DAY ('01-FEB-95')                                        : 本月的最后一天                                             '28-FEB-95'

ROUND('25-JUL-95' ,'MONTH')                              : 日期四舍五入                                                '01-AUG-95'

TRUNC('25-JUL-95' ,'MONTH')                               : 日期截断                                                       '01-JUL-95'

6.转换函数

数据类型转换:隐式 、显式

隐式: Oracle 自动完成下列转换

显式:

(1) TO_CHAR(date, 'format_model')

select employee_id,hire_date
from employees
where to_char(hire_date,'yyyy/mm/dd') = '1994/06/07';
--where to_date('1994/06/07','yyyy/mm/dd') = hire_date;

TO_CHAR(number, 'format_model')

select to_char(12345678.99,'L999,999,999.99') from dual;

在TO_CHAR 函数中经常使用的几种格式:

(2)TO_DATE(char[ , 'format_model' ])

select employee_id,hire_date
from employees
--where to_char(hire_date,'yyyy/mm/dd') = '1994/06/07';
where to_date('1994/06/07','yyyy/mm/dd') = hire_date;

(3)TO_NUMBER(char[ ,  'format_model' ])

TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)
from dual

7.通用函数

这些函数适用于任何数据类型,同时也适用于空值:
                   NVL (expr1, expr2)                                                若expr1不为空,则expr1=expr1 ; 为空,expr1=expr2           
                   NVL2 (expr1, expr2, expr3)                                   若expr1不为空,则expr1=expr2 ; 为空,expr1=expr3
                   NULLIF (expr1, expr2)                                           相等返回NULL,不等返回expr1 
                   COALESCE (expr1, expr2, ..., exprn)                    返回表达式中第一个非空表达式,如果都为空则返回空值。

(1)  NVL (expr1, expr2)

select last_name,nvl(to_char(department_id),'没有部门')
from employees;

(2)  NVL2 (expr1, expr2, expr3)

select employee_id,  nvl2(commission_pct  ,commission_pct + 0.015    , 0.01)
from employees;

(3) NULLIF (expr1, expr2)

SELECT first_name, LENGTH(first_name) "expr1",
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;

(4) COALESCE (expr1, expr2, ..., exprn)

SELECT   last_name,
COALESCE(commission_pct, salary, 10) comm
FROM employees
ORDER BY commission_pct;

(5)条件表达式之 CASE表达式

语法:

CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END

示例:

SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary
END "REVISED_SALARY"
FROM employees;

(6)条件表达式之  DECODE 函数

语法: 若expression=search1,则结果为 result1

DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])

示例:

SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP', 1.20*salary,
salary)
REVISED_SALARY
FROM employees;

Oracle学习笔记_03_单行函数的更多相关文章

  1. Oracle学习笔记:trunc函数

    在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...

  2. Oracle学习笔记:wm_concat函数合并字段

    在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...

  3. PL/SQL学习笔记_03_存储函数与存储过程

    ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dua ...

  4. Oracle学习第二篇—单行函数

    1字符函数 length  字符长度 lengthb 字节长度 lower 变为小写 upper 变为大写 initcap 首字母大写 select Lower('xun Ying') 小写,Uppe ...

  5. Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

    PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...

  6. Oracle学习笔记之用户自定义函数

    自定义函数语法格式:   用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用:注意:函数只能有一个返回值 ...

  7. Oracle学习笔记:decode函数

    decode函数主要作用:将查询结果翻译成其他值(即以其他形式变现出来) 使用方法: SELECT DECODE(colunm_name,值1,翻译值1,值2,翻译值2……值n,翻译值n,缺省值) F ...

  8. Oracle学习笔记_05_分组函数

    组函数:avg  sum  max  min   count group by having group by 增强:rollup      cube     grouping      groupi ...

  9. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

随机推荐

  1. My sql 5.7 安装及错误解决

    安装MYSQL5.7时,一直不能启动服务,找了N多办法,一直在围绕MY.INI文件来改来改去. 实际情况是,PATH路径设置完成后(计算机——属性—高级设置-环境变量——path),要执行以下命令初始 ...

  2. mysql case then 语句

  3. Myecplise Tomcat 启动很慢

    今天突然遇到一个问题,tomcat在Myecplse启动非常慢,直接用tomcat自带的start.bat启动很快,如果通过Myeclipse启动会发现项目一直在实例化,最后发现是因为加了断点调试,断 ...

  4. 【BZOJ1899】[Zjoi2004]Lunch 午餐 贪心+DP

    [BZOJ1899][Zjoi2004]Lunch 午餐 Description 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时 ...

  5. 【BZOJ2790】[Poi2012]Distance 筛素数+调和级数

    [BZOJ2790][Poi2012]Distance Description 对于两个正整数a.b,这样定义函数d(a,b):每次操作可以选择一个质数p,将a变成a*p或a/p, 如果选择变成a/p ...

  6. 大数据学习系列(5)-- 局域网yum仓库搭建

    https://www.cnblogs.com/nulige/p/6081192.html

  7. python字符串基本方法

    字符串类型在Python中是十分重要的类型,他一般用引号中间添加字符的形式表达,不同于其他语言的是,Python中双引号(” “)与单引号(’ ‘)是不予区分的.都可以用来表示字符串 创建.赋值和访问 ...

  8. git本地分支管理

    查看分支:git branch创建分支:git branch dev重命名分支:git branch -m dev dev1删除分支:git branch -d dev切换分支:git checkou ...

  9. linux c编程:线程退出

    在线程创建的时候pthread_exit都是调用的固定参数,我们先来看下如果用自动变量作为pthread_exit的参数时出现的问题 typedef struct foo{ int a; int b; ...

  10. [Java面试一]Spring总结以及在面试中的一些问题.(转发:http://www.cnblogs.com/wang-meng/p/5701982.html)

    1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spri ...