设为首页 收藏本站
查看: 461|回复: 0

[经验分享] Oracle中一些常用的函数整理

[复制链接]

尚未签到

发表于 2016-8-12 07:17:38 | 显示全部楼层 |阅读模式
select ceil(10),ceil(10.1),ceil(-10.5) from dual;



select greatest(1,2,3,-1,0) from dual;  --数字中的最大值

select greatest('one','ten') from dual;  --字符串中的最大值

select greatest(to_date('2014-01-08','yyyy-mm-dd'),to_date('2013-05-08','yyyy-mm-dd')) from dual;

select least(1,2,3,-10,0) from dual;  --数字中最小值


select trunc(sysdate,'yyyy-mm') from dual;


select ASCII('a'),ASCII('abc') from dual;

select CONCAT('Good','Morning'), 'Good' || 'Morning' from dual; --concat 相当于连接操作符(||)

select INITCAP('Good MORNING,QQ') from dual;  --首字母大写,其余字母小写


select instr('easycome,easygo','easy') from dual;
select instr('easycome,easygo','easy',1,2) from dual;

select instrb('easycome,easygo','easy') from dual;
select instrb('easycome,easygo','easy',1,2) from dual;

select length('ABC') from dual;  --返回字符串中的字符数
select lengthb('ABC') from dual;  --返回字符串中的字节数,一般情况下lengthb返回结果与length相同,使用多字节字符集时有所不同;

select lower('ADB') from dual;  --将所有字符串转换为小写
select upper('abD') from dual;  --将所有字符串转换为大写

LPAD(String1,n[,String2]) --在String1的左边添加空格,或者重复填充由String2指定的字符串,直到结果字符串达到n个字符为止;[,String2]为可选参数,默认为单个空格
select LPAD('X',3),LPAD('X',3,'Y'),LPAD('RIGHT',12,'LEFT') from dual;
select RPAD('X',3),RPAD('X',3,'Y'),RPAD('RIGHT',12,'LEFT') from dual;




select LTRIM(string1,[,string2]) from dual; --string1指定要删除的字符串,string2指定包含要被删除的字符集的字符串,该参数默认为单个空格,当函数遇到字符串中没有提供字符时,删除字符过程结束
select LTRIM(' ABC miss') from dual;
select RTRIM(' ABC miss.   ') from dual;
select LTRIM(' ****@@*@**ABC miss','*@') from dual;


select replace('123abc456d111','abc') from dual;
select replace('123abc456d111','abc','ABC') from dual;


select soundex('i') from dual;

select subStr('OneTwoThree',7) from dual;
select subStr('OneTwoThree',4,3) from dual;
select subStr('OneTwoThree',-5) from dual;


select TRANSLATE('123.45','0123456789','abcdefghij') from dual;
select TRANSLATE('123.45','0123456789.','abcdefghij') from dual;


select trim(' ABC  ') from dual;  --去左右空格
select trim(LEADING FROM ' ABC  ') from dual;  --去左边空格
select trim(TRAILING FROM ' ABC  ') from dual;  --去右边空格
select trim(BOTH FROM ' ABC  ') from dual;  --去左右空格
select trim(LEADING '$' from '$123.45$') from dual;

select lower('ABC') from dual;
select upper('abc') from dual;


select add_months(sysdate,1) from dual;
select add_months(sysdate,-1) from dual;
select add_months(date'2014-01-29',1) from dual;

select last_day(sysdate) from dual;  --当前月的最后一天

select months_between(date'2014-12-25',date'2013-12-25') from dual;


select to_date('2014-03-01','yyyy-mm-dd') - 1 from dual;

--select next_day('20-May-2000','Sun') from dual;

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi';
select round(to_date('2014-12-25 16:35')) day,
       round(to_date('2014-12-25 16:35'),'hh') hour,
       round(to_date('2014-12-25 16:35'),'yyyy') year  from dual;

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi';      
select trunc(to_date('2014-12-25 16:35')) day,
       trunc(to_date('2014-12-25 16:35'),'hh') hour,
       trunc(to_date('2014-12-25 16:35'),'yyyy') year  from dual;
      

--转换函数:
---------允许将一种数据类型转换为另一种数据类型:
to_char:转换日期和数字值为字符串
to_date:转换字符串为日期值
to_number:转换字符串为数字
select * from dual where rowid = CHARTOROWID('AAAAECAABAAAAgiAAA'); --将char或varchar2型值转换为rowid的值
convert(string,dest_char_set[,sourch_char_set]):--将字符串从一个字符集转换为另外一个字符集
select convert(chr(194) || chr(133) || chr(64) || chr(213) || chr(137) || chr(131) || chr(133),'US7ASCII') from dual;
select dump(hextoraw('C28540D5B983B5')) from dual;  --转换字符串中包含的十六进制数字对应于那些数字组成的raw值
select rawtohex(hextoraw('C28540D5B983B5')) from dual;  --转换raw值为十六进制数字的字符串
select rowid, rowidtochar(rowid) from dual;

--to_lob
select to_multi_byte('Be nice') from dual; --转换单字节字符为多字节等同物
select to_single_byte('Be nice') from dual; --转换多字节字符为单字节等同物
select translate('be nice' USING NCHAR_CS) from dual; --转换文本为数据库字符集或国际字符集

decode:提供嵌入if语句的能力--限制最大有255个参数

select dump(sysdate) from dual;
select empty_blob() from dual; --返回空blob的位置,可以用于初始化blob列;
select empty_clob() from dual; --返回空clob的位置,可以用于初始化clob列;

select nls_charset_decl_len(100,nls_charset_id('US7ASCII')) from dual; --在提供的字节计数的基础上,返回nchar列的定义宽度
select nls_charset_id('US7ASCII'),nls_charset_id('WE8EBCDIC37C') from dual;  --
select nls_charset_name(1),nls_charset_name(90) from dual;


select nvl(null,'Is Null') from dual;
select nvl('NOT Null','Is Null') from dual;

sys_context(namespace,attribute_name,[,length])--返回应用程序上下文命名空间中的属性值
select sys_context('USERENV','SESSION_USER') from dual;


select sys_guid() from dual;  --返回可以用作全局唯一标识符的16字节的RAW值
select UID from dual;  --返回唯一定义当前数据库用户的整数值
select user from dual; --返回当前用户,在存储过程或函数中调用时,返回存储过程或函数所有者的名字;在触发器中调用时,返回登录用户名
select userenv('INSTANCE'), userenv('ISDBA') from dual; --返回有关当前用户的信息
select vsize(sysdate) from dual;  --以字节的形式返回内部代表值的大小
select length(sysdate) from dual;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256692-1-1.html 上篇帖子: oracle存储过程常用技巧 (转帖) 下篇帖子: Oracle 更新一百万条数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表