sql数据库开发-5:单行函数

本文详细介绍了Oracle SQL中的单行函数,特别是针对数值和日期类型的处理。内容包括四舍五入函数ROUND和截取函数TRUNC的用法,以及转换函数TO_NUMBER和TO_CHAR的实践应用。同时,文章还讨论了Session的概念,日期格式的表示方式,以及TO_DATE函数的使用。文中通过多个示例和项目案例,帮助读者深入理解这些函数的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单行函数的使用

 
    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';

 

 

 

 

 

 

 

    

 


   

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值