1.Oracle:查询出数字显示文字:select decode(字段 ,0,'未发布',1,'发布') from 表
2.Oracle:时间段的查询:select * from cms_b_knowledge_release a
where 1=1
and to_char(a.release_date,'yyyy-mm-dd')>='2016-09-16'
and
to_char(a.release_date,'yyyy-mm-dd')<='2016-09-18'
或者to_date(a.release_date,'yyyy-mm-dd')
3.Oracle:删除表字段:alter table 表名 drop column 表字段
4.Oracle:批量删除:delete from 表名 ab where ab.id in (:要删除的字段集合)
delete from CMS_B_KNOWLEDGE_RELEASE ab where ab.id in (:idlist)
5.Oracle:SQL 两列字段,合并为一个字符串,中间加符号 ||'--'||
日期起--日期止:to_char(bc.contract_date_start,'yyyy-mm-dd')||'--'||to_char(bc.contract_date_end,'yyyy-mm-dd')
6.Oracle:将一张表的数据导入另一张表:对应字段的导入
insert into cms_c_bdgt_project(id,year,project_name,project_code,department_id)
select sys_guid(),bpt.year,bpt.project_name,bpt.project_code,bpt.deptId from cms_c_project_temp bpt;
7.Oracle:查询表数据并且只过滤掉一个字段的重复数据,其他字段数据正常显示
SELECT sys_guid(),max(a.id), max(a.dic_number),max(a.business_memo) FROM cms_c_provider_vat_temp a GROUP BY a.vat_id HAVING COUNT(*) >= 0;过滤vat_id 重复数据
8.Oracle:查询条件,如果某个字段为空返回E3 不为空返回E2
NVL(E1, E2,E3)
9.Oracle:查询两张类似的表,查询出来的字段相同只是数据不同时
select id from cms_b_contract_bill union all select id from cms_b_contract_ext_bill
10.Oracle:sql中时间转换成天数、小时....
ROUND(TO_NUMBER(bc.complete_date - bc.create_date)) 天
ROUND(TO_NUMBER(bc.complete_date - bc.create_date)*24) 小时
11.Oracle:从一张表中查询出某个字段的数据并更新到另一张表的一个字段的数据当中
update scm_contract_change_detail dd set dd.draft_contract_id = (select aa.draft_contract_id from scm_contract_change_apply aa where dd.apply_id = aa.id)
where exists (select 1 from scm_contract_change_apply cc where dd.apply_id = cc.id)
12.oracle:将数据库的一列合并到一行
select wm_concat(字段)/replace(wm_concat(字段),',',',') from table
13.递归
start with t.id=0 connect by prior t.id=parent_org_id
14.存在更新不存在插入(一条sql实现)
MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...)
WHEN MATCHED THEN
[UPDATE sql]
WHEN NOT MATCHED THEN
[INSERT sql]
A表和B表满足on中的条件 存在更新不存在插入,eg:
MERGE INTO table A
using (select b.b1,b.b2,b3 from table b,table c where b4=c4 ) B
on (A.a1=B.b1 and A.a2=B.b2 and A.a3=B.b3)
WHEN MATCHED THEN
update set A.a4 = B.b3
WHEN NOT MATCHED THEN
insert (a1,a2,a3,a4,a5) values
(b1,b2,b3,b4,b5)