zoukankan      html  css  js  c++  java
  • oracle nvl,to_char 函数(二)

       ----------数据表中的null

       如果含有null值,需要特别注意

        1.在计算表达式中,如果某列的值为空,则计算的结果都为空。

           select  monthSal*12+奖金 as yearMoney from emp;

           如果某个人没有奖金,此行值为null,则 yearMoney 为空。

          解决方案使用 滤空函数 nvl: monthSal*12+nvl(奖金,0) as yearMoney from emp;

        2. 判断是否为空 用 is null / is not null

      -----------关于distinct

        distinct如果作用于多列,只有多列值全部相同时,才会被认为相同

      

      在这里我要介绍一下很重要的函数,转换函数 to_char();

      用命令 select sysdate from dual 可以得到系统时间 2012/2/26。在oracle中日期格式默认是是yyyy-dd-mm,因此有些不符合中国人的yyyy-mm-dd习惯,如何修改,用to_char,即 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual,得到

    2012-02-26 10:35:15,其中的hh24表示24小时制,hh12表示的是12小时制。有add_month(,dn),last_day(n)几个日期函数,这在做报表的时候特别有用的。

      to_char()不仅可以转换日期,还可以转换薪水,to_char(columnName,'L99999.99'),L99999.99中的L表示本地货币,前面5个9表示小数点前有5个位数,不足的不显示,小数点后面2个9表示两位小数。其中L可以被C(国际货币符号)、$(美元)。具体用法可以查看其他资料,太多了。

      在微软的SQL Server 也有类似的函数,为了便于自己学习,也总结了一下,对照学习有好处

    select upper('abc') 
    select power(3,3) ---27 a的b次方
    select round(3.513,2)
    select substring('abc',1,2)  ---截取字符串长度
    select len('avbc') --获得字符串长度
    
    select getdate()
    select dateadd(d,3,getdate()) --在时间上加上几天,其中d可以换成yy,m等
    select year(getdate()) --获得年份
    select day(getdate())  --获得天
    select month(getdate()) --获得月份
    select convert(nvarchar(100),getdate(),111);  ---2012/02/28 转换函数,其中,111是可以改变的,可以看参考文章 

       接下里是oracle中一些常用的字段类型,这都是很基础的啦!

     char:字符类型,虽然比较占用空间, 但效率很高,查询速度极快,因为是整个匹配,常用于存放长度一定的数据,比如身份证,学号。

       varchar2: 变长字符类型,虽然节约空间,但查询速度比较慢,可以存放文章、新闻等等。

       number:数字类型之一,最大值的是10的38次方,如果是number(5,2)则表示的是该数字 5位有效数,2位小数,如果是number(5) 表示一个五位有效数字的整数。事件类型date,起哄timestamp是对date的扩展。blob 是用来存储二进制数据,如图片、声音,但通常我们是用来存储这些数据的地址的,如果这些图片声音特别重要,我们则可以直接存放在数据库中。

  • 相关阅读:
    .net操作cookies
    sqlserver 自增列清零
    数据库之mysql视图、触发器、事务、存储过程、函数等相关内容-47
    知识补充之面向对象魔法方法及mysql等相关内容
    数据库之mysql多表查询(子查询)以及pymysql等相关内容-46
    数据库之mysql多表查询(连表)以及pymysql等相关内容-45
    数据库之mysql约束条件、表关系、记录操作等相关内容-44
    数据库之mysq修改表、表字段类型等相关内容-43
    数据库之mysql基础等相关内容-42
    并发编程之基于协程的高并发服务端、面向对象回顾等相关内容-41
  • 原文地址:https://www.cnblogs.com/xianrongbin/p/2368462.html
Copyright © 2011-2022 走看看