Oracle 中方法记录

不断更新中...请稍后...

一,在项目中记录条数时,累加起来和总条数不同,找了半天,又在网上看了看,才发现原来是在用Oracle中不等于出现了问题,,,

  1):在用 <>  、!=、 ~=  这几个来判断不等于某值的时候,为空的数据是查不出来的,只能查询到满足该条件的非空记录 。

  2):最简单的可以换成 select * from test where nvl(name,'xx')<>'CC' ;将所有为空的name替换成某值,然后进行判断 。

 

二,常用方法

  1):select c.cusno || '-' || c.chnm chnm  , length(c.cusno)  from crm_cusinf c; ---拼接字段, 获取字段长度 。

  2):substr(字符串, 截取开始位置, 截取长度);注:截取开始位置为0和1时都代表从第一个字符开始截取,当为负数时表示,从右边开始截取。

  3):decode(column1,column2,1,0);判断两值是否相等,等为1,不等则为2。

  4):nvl(string a, b)函数:当 a 为空时,替换为b ,不为空则本身 。

  5):upper(column1),Lower(column1); 转大小写格式。

  6):select TO_CHAR(to_number('11'),'9999999.99') from dual; 统一格式化保留两位小数

  

三,常用小知识

  1):获取某列值内值的 第一行 和其他行数据

    select substr(s.sender, 0, instr(s.sender, chr(10), 1)) companynm  from exp_sendreceive s; --获取列值内第一行数据

    select substr(s.sender, instr(s.sender, chr(10), 1) + 1) companyaddr   from exp_sendreceive s ;--获取列值内其他行数据

  2):在进行(模糊)查询时,用户输入时,有的需要忽略大小写,此时可以统一大小写,select upper(user_no) from m_user  或者用Lower()

 

四,日期格式

  1):20160713143000 格式(yyyymmddhhmiss)

     select to_char(to_date( '2016-07-13 14:30:00' ,'yyyy-mm-dd,hh24:mi:ss'),'yyyymmddhh24miss') from dual;

  2):2016-07-13 14:30:00 格式(yyyy-mm-dd hh24:mi:ss)

     select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--显示 yyyy-mm-dd 只需吧 hh24:mi:ss去掉即可

  3):获取本月最后一天 select LAST_DAY(to_date('2016-09-01','yyyy-mm-dd')) from dual;

 

                          


 

                                            记录点点滴滴,虽然微不足道。                                

posted @ 2016-10-14 10:13  代码飞了  阅读(192)  评论(3编辑  收藏  举报