返回顶部

【转载】oracle(四)

[复制链接]
飘在云端Lv.9 显示全部楼层 发表于 2017-2-14 17:36:05 |阅读模式 打印 上一主题 下一主题

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Null:空值
    空值当成无穷大处理,所有空值参与的运算皆为空。
    空值与空值并不相等,因为空值不能直接运算。
    如:prod_price=""     这种写法是错的(不要受到corejava的影响)
    prod_price=NULL      这种写法是错的(不要受到corejava的影响)
    prod_price IS NULL   这种写法才是对的
NVL:处理空值,把空值转化为指定值。可转化为日期、字符、数值等三种(注意:转化时,两参数必须要同类型)
    在SQL server 里用"ISNULL(需转的数据,转成什么)"函数代替。
    遇到数值要把空转换成字符串的,需先把数值转成字符串类型。
    如:NVL(date, '01-JAN-95')    NVL(title,'NO Title Yet')        NVL(salary,0)
    错误写法:
     Select last_name,title,salary*commission_pct/100 COMM From s_emp;--没提成的人没法显示工资
    正确写法:
     Select last_name,title,salary*NVL(commission_pct,0)/100 COMM From s_emp;--把提成是空值的转化为0
注意:在oracle中的 NVL ,在 SQL server 中用 ISNULL。格式相同。
DISTINCT:过滤重复
    把重复的行过滤掉;多个字段组合时,只排除组合重复的。
    DISTINCT必须使用列名前,不能使用计算或者表达式。
    所有的聚合函数都可以使用。如果指定列名,则DISTINCT只能用于COUNT(列名),DISTINCT不能用于COUNT(*)。
    如:Select  Distinct  name  From  s_dept;
            Select Distinct dept_id,title  From s_emp;
    注意:Distinct 配合字段使用时,无法在字段列表里指定非唯一的单元或运算值。配合聚合函数使用时,需把 distinct 放到聚合函数的括号中,而仅对此函数有效。
文本处理:
TRIM()/LTRIM()/RTIRM():去空格。只能去掉头和尾的空格,中间的不理。
     trim('   heo Are  fdou   ')  -->  heo Are  fdou
     输入:select trim('   heo Are  fdou   ')  from dual; -->:heo Are  fdou
LOWER:转小写
    lower('SQL Course') --> sql course
UPPER:转大写
    upper('    SQL Course') --->SQL COURSE
INITCAP:首字母转大写,其余转小写
    initcap('SQL Course') --> Sql Course
CONCAT:合成。双竖线只能在select语句里面用,这个可用于任何语句。
    Concat('Good','String') --> GoodString
SUBSTR:截取。
    Substr('String', 1 ,3)  --> Str
        第一个数字“1”,表示从第几个开始截取;若要从倒数第几个开始,用负数,如“-2”表示倒数第2个。
        上式中第2个数字“3”表示截取多少个。
LENGTH:统计长度。
    Length('String') --> 6
NVL:转换空值,上面已有.
日期和时间处理:
    Oracle日期格式:DD-MMM-YYYY        (D代表日期date,M代表月month,Y代表年year)
    如:SELECT prod_name              (DAY表示完整的星期几,DY显示星期的前三个字母)
        FROM Products
        WHERE prod_time BETWEEN
            to_date(’01-JAN-2008’)
        AND to_date(’31-DEC-2008’);
    日期可以进行加减,默认单位是1天。日期与日期可以相减,得出天数;日期与日期但不能相加。
sysdate   ->  系统的当天
Months_Between('01-Sep-95','11-Jan-94')  --> 19.774194    相差多少个月,Between里面也可以填函数。
Add_months('11-Jan-94',6)                -->  11-Jul-94   增加多少个月
Next_day('01-Sep-95','Friday')   --> '08-Sep-95'    下一个星期五。其中的'Friday'可用6替代,因为星期日=1
Last_day('01-Sep-95')            -->  '30-Sep-95'   这个月的最后一天
数值处理:可以运用于代数,三角,几何
ROUND:四舍五入
    Round(45.925,2)  -> 45.93        Round(45.925,0)  -> 46        Round(45.925,-1)  -> 50
    逗号前一个数是要处理的数据源,后一个参数表示保留多少位小数。
    后一参数是负数时,表示舍去小数点前的几位,例3是舍去个位及其后的。不写后一参数时,默认不保留小数。
TRUNC:舍去末位。直接舍去,不会进位。
    Trung(45.925,2)  -> 45.92       Trung(45.925,2)  -> 45.92       Trung(45.925,2)  -> 45.92
日期的舍取:
常用的数值处理函数有:
    ABS()    绝对值        ABS(-5741.5854) --> 5741.5854
    PI()     圆周率        注意:oracle中不支持 PI()函数;MYSql 支持PI()函数。
    SIN()    正统值             Oracle还支持COS()、ASIN()、ACOS()函数
    SQRT()   平方根
  转化:
TO_CHAR(number,'fmt'):把数值转换成字符串
    显示数字的命令
    9:正常显示数字;
    0:显示包括0的数值形式,空位强制补0;
    $:以美元符号显示货币;
    L:按当前环境显示相关的货币符号;
    . 和,:在固定位置出现“.”点 和“,”逗号;不够位时,四舍五入。
   例题:SQL> select 'Order'||To_char(id)||
  2  'was filled for a total of'
  3  ||To_char(total,'fm$9,999,999')
  4  from s_ord
  5  where ship_date ='21-SEP-92';
TO_NUMBER(char):把字符转换成数字

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

云萌主 云萌主-BIGSAAS旗下,由北京合智互联信息技术有限公司在2018年创立,为广大云应用技术爱好者的平台。在云萌主论坛可以查看云应用技术文章、云产品产品最新资讯、技术问答、技术视频。在畅游云上技术的同时,学到最新的云应用产品和技术。
  • 微信公众号

  • Powered by Discuz! X3.4 | Licensed | Copyright © 2001-2022, Aliyun Cloud. | 星点互联设计
  • 京ICP备18052714号 | 营业执照 | |合智互联| QQ