instr()函数的使用
最近遇到需要从长字符串中截取部分语句,开始直接使用substr(字符串,开始位置,长度)函数进行截取,
但因为开始位置和长度不一样,导致不能得到希望结果,后面发现这些字符串有些规律,想到使用instr()
instr(被查询的字符串, 需要查找的关键字, 开始位置,出现第几次 ),函数的下表从1开始
和substr()函数使用可截取长字符串中的短句,如果要替换截取的字符串,再和replace()函数搭配就完美
replace(t.return_xml,to_char(substr(t.return_xml,
instr(t.return_xml, '>', 1, 3) + 1,
instr(t.return_xml, '<', 1, 4) -
instr(t.return_xml, '>', 1, 3) - 1)),
111111)
trunc()函数的使用:
1.)在创建oracle定时任务时,用到trunc(时间,精度)函数,在此记录下
精度包含:年,月,星期,日,时
trunc(sysdate)--当前年月日
trunc(sysdate,'yyyy') --当年的第一天2018-01-01
trunc(sysdate,'mm')--当年当月的第一天2018-03-01
trunc(sysdate,'d')--当前当月当星期的第一天2018-03-04
trunc(sysdate,'dd')--当前时间2018-03-06
trunc(sysdate,'mi')--当前年月日时分
trunc(next_day(sysdate,'星期一'))--当前时间的下个星期一
TRUNC(LAST_DAY(SYSDATE))+1+1/24--每月1日凌晨1点执行
TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24--每季度的第一天凌晨1点执行
2.)trunc(数字,精度)
trunc(m,n)函数截取时不进行四舍五入,和number(p,s)有点差别,精度为负数截取小数点左n位
其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去
trunc(123.45) --123
trunc(123,45,1)--123.4
trunc(123.45,-1)--120
case when.. then.. else.. end用法
select c.gender,
case
when c.gender = 'M' then
'男'
when c.gender = 'W' then
'女'
else
'无'
end
from t_customer c;
查询表被哪个存储过程调用:
SELECT DISTINCT * FROM user_source
WHERE TYPE = 'PROCEDURE'
AND upper(text) LIKE '%TBL_SHENGHUA_DETAIL%';

被折叠的 条评论
为什么被折叠?



