1.把返回結(jié)果集合,以表的形式返回
點(diǎn)擊查看代碼
select * from table(p_split('1,2,3'),',');
create or replace type type_split is table of varchar2(4000);
create or replace function p_split(p_string in varchar2, p_delimiter in varchar2)
return type_split
pipelined
as
v_length number:=length(p_string);
v_start number:=1;
v_index number;
begin
while(v_start<=v_length)
loop
v_index:=instr(p_string,p_delimiter,v_start);
if v_index = 0
then
pipe row(substr(p_string,v_start));
v_start:=v_length + 1;
else
pipe row(substr(p_string, v_start, v_index - v_start));
v_start:=v_index + 1;
end if;
end loop;
return;
end p_split;
2.to_char() 按照指定格式輸出字符串
to_char(sysdate,'YYYYMMDD')
// fm 除去空格和0
// 9999999.0099:允許小數(shù)點(diǎn)左邊最大正數(shù)為7位,小數(shù)點(diǎn)右邊最少2位,最多4位,且在第5位進(jìn)行四舍五入
Select TO_CHAR(123.0233,'FM9999999.0099') FROM DUAL
3.to_date() 按照指定格式輸出日期
to_date('20230324','YYYYMMDD')
to_date(20230324,'YYYYMMDD')
4.to_number() 將字符串按指定格式輸出為數(shù)值
TO_NUMBER('$123,456.78','$999,999.99')
TO_NUMBER('123.45')
5.trunc(date, format) 按照指定格式截?cái)嗳掌? 該format參數(shù)是可選的,默認(rèn)DD

6.NVL(expr1,expr2) 含義是:如果oracle第一個(gè)參數(shù)為null那么顯示第二個(gè)參數(shù)的值,如果第一個(gè)參數(shù)的值不為null,則顯示第一個(gè)參數(shù)本來的值。
NVL2(expr1,expr2, expr3) 含義是:如果該函數(shù)的第一個(gè)參數(shù)為null那么顯示第三個(gè)參數(shù)的值,如果第一個(gè)參數(shù)的值不為null,則顯示第二個(gè)參數(shù)的值。
7.將結(jié)果集拼接成一個(gè)字段
點(diǎn)擊查看代碼
select listagg(字段名,',') within group (order by 字段名) from 表名 where 條件
8.case when函數(shù)
點(diǎn)擊查看代碼
case when 條件1 then 結(jié)果1
when 條件2 then 結(jié)果2
else 結(jié)果3
end;
9.高效率批量插入更新merge into
點(diǎn)擊查看代碼
merge into 表
using (表|視圖|子查詢等)
on (條件)
when match then
update set 字段=值
when no match then
insert (字段...) values (值...)
浙公網(wǎng)安備 33010602011771號(hào)