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;
记录点点滴滴,虽然微不足道。