单行函数的使用
SQL函数的两种类型
单行函数(single-row function)
-- 字符类型 (character)
-- 数值类型 (number)
-- 日期类型 (date)
多行函数(组函数)(multi-row function)
单行函数的应用场景
问题
-- 对表达式的返回值做四舍五入
核心点
-- 理解对于不同数据类型数据,ORACLE给我们提供了哪些便利的方法。
解决方法
--单行函数
数值函数
round 四舍五入函数
trunc 截取函数
ROUND、TRUNC 函数
round(45.923,2) 45.92
round(45.923,0) 46
round(45.923,-1) 50
trunc(45.923,2) 45.92
trunc(45.923) 45
trunc(45.923,-1) 40
项目案例:
月固定费用四舍五入到角,元;
月固定费用截取到角,元。
转换函数:
to_number 将字符串转换成数值
to_char 将数值转转化成数字字符串
转换函数中包含格式说明
Session的概念
登录数据库:用client端程序与数据库建连接,需要提供用户名和口令,需要有create session 的权限。
成功登录数据库的标志,通过client端程序获得了一个session 。 session 是逻辑上用户同服务器的通信交互,SQL语句的运行环境。
从用户的直观感觉上sql是在 session中运行。
改变session 中 的日期格式
通过改变 session 中的参数 可以概览 sql 的运行环境。
nls_date_format
ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy mm dd hh24:mi:ss' ;
改变session 中 的语言
nls_langauage
Americceb 美语
Simplifier chinese 简体中文
alter session set nls_language = american;
alter sesison set nls_language = 'simplified chinese';
Session 的 概念
connection是物理上的客户机同服务器端的通信链路,即两个socket组成一个connection,是网络层面的描述。
session 是和 connection 同时建立的,两者是对同一件事情不同层次的描述,session是数据库层面的描述。
两个socket分别对应client段应用进程的数据库服务器端的server process进程,从操作系统的角度看是进程是真正的物理实现。
Session的物理实现:成功创建session的标志在oracle server端创建了一个server process进程。 在session 上运行的sql语句有server process完成。
用网络编程的方法实现了数据库中的session 。
日期格式
yyyy : 用数字表达的四位年 (2013 年)
mm : 用数字表达的二位月 (01月)
dd : 用数字表达的二位日 (01日)
hh24 : 用数字表达的24进制的小时 (20点)
h12 : 用数字表达的12进制的小时 (8点)
mi : 用数字表达的分钟 (30分)
ss : 用数字表达的小时 (30秒)
日期格式
D: 用数字表达的一周的第几天 (周日:1)
day: 用全拼表达的星期几 (sunday)
month: 用全拼表达的月 (march)
mon: 用简拼表达的月 (mar)
TO_DATE 函数
用 TO_DATE函数将字符串转换成一个日期值。
TO_DATE('10 September 2009','dd Month yyyy')
例如: insert into tabname(colname1) values('01-JAN-13')
insert into tabname(colname1) values(to_date('2013 01 01','yyyy mm dd'));
错误分析
create table test(c1 date);
insert into test values ('01-JAN-08');
insert into test values ('2008-08-08'); (报错)
insert into test values (to_date('2008-08-08'),'yyyy-mm-dd'));
to_char 函数
格式说明
第一个参数为要处理的日期,第二个参数为格式
格式必须用单引号括起来,并且大小写敏感
必须是有效的日期格式
fm能去掉两端的空格以及去掉前导零
select to_char(colname1,'yyyy mm dd') from tabname;
数据库中处理日期类型
select c1 from cost;
select to_char(c1,'yyyy-mm-dd') from test;
项目案例:
创建一张表,包含date类型的列,插入2008年8年8日8点8分8秒并显示
项目案例:
哪些os账户是在3月份创建的
to_number函数
to_number函数的注意事项
create table test(c1 varchar2(2));
insert into test values ('10');
insert into test values ('ab');
select c1*10 from test;
项目案例:
解释该语句为什么没有返回结果 ?
select os_username,create_date from service where to_char(create_date,'MONTH')='MARCH';