/*读取字符串长度*/
select length(string) from dual;
/*将字符串的所有字符转成大写*/
select upper(string) from dual;
/*将字符串的所有字符转成小写*/
select lower(string) from dual;
/*返回一个n1除以n2的余数*/
select mod(n1,n2) from dual;
/*round按照指定的精度进行舍入,trunc直接舍去*/
--举例
select round(55.885,2),round(-55.885,2),trunc(55.885,2),trunc(-55.885,2)
from dual;
/*返回一组表达式中的最大值,即比较字符的编码大小*/
select greatest('2013-04-05','2014-05-06') from dual;
/*返回一组表达式中的最小值,即比较字符的编码大小*/
select least('2013-04-05','2014-05-06') from dual;
/*根据任意字符截取字符串长度*/
select substr( 'jsjhegang.com',1, instr('jsjhegang.com','.')-1 )
,substr( 'jsjhegang.com', instr('jsjhegang.com','.')+1, length('jsjhegang.com') )
from dual
;
/*字符串替换,将字符串str中的str1替换成str2*/
select replace(string,str1,str2)
from dual;
--比如查询 select replace('he love you','he','i') from dual; 运行结果为'i love you'
/*全角半角转换函数*/
to_single_byte(c)--转换成半角
to_multi_byte(c) --转换成全角
/*排名函数*/
rank() over(partition by .. order by ..) --样式:1,2,2,4,5
dense_rank() over(partition by .. order by ..)--样式:1,2,2,3,4
/*按特定标准排序的行号*/
row_number() over(partition by ... order by ...) --样式:1,2,3,4,5 (不会重复)
/*LEAD可以访问分组中当前行之后的行(构造字段使用),与lag()函数相反*/
--举例说明
select B.CRD_NO
,B.MARK_DATE as "营销开始日期"
,lead(B.MARK_DATE,1,'20991231')
over( partition by B.CRD_NO/*分组字段*/ order by B.MARK_DATE/*排序字段*/ ) as "营销结束日期"
from ptfh.B_M_CM_CRD_DJK_MARKET;
/*不足位数补零*/
oracle函数中有不足位数补空格的函数
LPAD和RPAD分别是左补位和右补位
repacle(lpad(字段名,共几位),' ' ,'0') 或者lpad(字段名,共几位,'0')
如运行select repalce(lpad('123',5,' ','0') from dual;
结果是00123,即补足五位