oracle - sql中很有用小知识点
在Oracle中,只有DML才会开启一个事务。也就是说Insert,Update,Delete这些都会开启一个事务,并且该事务在commit/rollback/ddl命令时会自动结束。
1.获取特定数据的前几位
select substr(recordid,1,2) from syscode where rownum < 5;
2.获取指定条数的数据
select recordid from syscode where rownum < 5;
3.获取指定格式的ID
function getsmssendid return varchar2 is
v_getsmssendid smssend.smssendid%type;
begin
select 'SMSSEND' || lpad(seq_smssend.nextval, 13, '0')
into v_getsmssendid
from dual;
return v_getsmssendid;
end;
类似这样的效果: SMSSEND0000000000001
4.去掉数据里的tab键
update temp_lj set ac10 = replace(ac10,chr(9),'');
commit;
5.更新,修改表中数据
select a.*,rowid from a
select a.* from a for update
以上两种都可以修改数据,但是第二种会锁表
6.控制查询导出的数量个数
1 --function中的部分代码 2 v_num smallint default 10;--查询就只能查询10条 3 begin 4 if p_type = 'B' then--即导出,就可以查出所有 5 v_num := 0; 6 end if; 7 v_NT_test := NEW nt_test(); 8 9 for c_ag in (select a.agentid, 10 a.recommendagentid, 11 getagentstatus(a.agentstatus) agentstatus, 12 a.agentcode, 13 a.agentname, 14 A.agentlevelcode, 15 a.hiredate, 16 a.casemainid 17 from agenthis a 18 where a.bizyearmonth = p_month 19 and a.agentstatus = 'AGENTSTATUS_09' 20 and a.branchid = p_branchid 21 and (a.agentcode = p_agentcode or p_agentcode is null) 22 and (rownum <= v_num or v_num = 0) 23 24 ) loop
7.数据导入到excel时,长数字会出现科学计算法(即省略部分数字不显示)
excel中出现科学计算法的那一列,将那列选中,鼠标右击选中设置单元格样式,将常规改成文本就OK了
8.日期
select to_char(sysdate, 'YYYY' ) || '年' ||to_char(sysdate, 'MM' ) || '月' ||
to_char(sysdate, 'DD' ) || '日' 日期
from dual
9.查询出数据,丢失了小数点前面的0,例如本来应该是0.0508,查出却是 .0508
select to_char('.0508','fm90.0000') from dual; 可解决
结果:0.0508 (说明:.0508就是表中的一列数,在数据库存的时候就是这样的)
fm9999999900.99,表示整数部分最多10位,00表示小数点前面有两个0,小数部分最多2位(并且会自动四舍五入),fm表示去掉转位字符串后前面的空格,不加fm,0.0508前面会有空格。
posted on 2012-06-20 23:31 lovebeauty 阅读(343) 评论(0) 编辑 收藏 举报