oracle常用函数&查询
随着工作内容的变化,项目中采用的数据库也由sqlserver转向了oracle,虽说都是结构化查询语言,但还是存在一些差异,把工作中用到的函数汇集起来,做个备忘。
字符函数
upper,lower,大小写转换 select * from oracle_demo where lower(name)='admin' select upper(name) from oracle_demo
转换函数
--to_char,转换为字符串,功能强大,提供了格式化的选项 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual//获取当前时间 select to_char(sysdate,'yyyy-mm-dd') from dual; select to_char(0.123,'0.999') from dual --to_number,转换为数值 select * from oracle_demo order by to_number(grade) desc
条件函数
NVL(expr1,expr2),如果第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值,类似于sqlserver的isnull函数
select NVL(nickName,name) from oracle_demo
其他函数
length,查看字符长度,lengthb查看字节长度,一个汉字占用2个字节(根据oracle字符集编码会变化,不同的编码会占用3-4个字节),英文字母占用1个字节,
查看oracle编码的语句
select length('字符长度'),lengthb('字符长度') from dual; select length('hello'),lengthb('hello') from dual;
select userenv('language') from dual;
--查看服务端 select * from nls_database_parameters; select * from v$nls_parameters where parameter='NLS_CHARACTERSET'; --查看客户端 select * from nls_instance_parameters; --查看会话 select * from nls_session_parameters;
(+)表示外连接,并且总是放在非主表的一方 例如左外连接: select A.a,B.a from A LEFT JOIN B ON A.b=B.b; 等价于 select A.a,B.a from A,B where A.b = B.b(+);
树形查询
--从Root往树末梢递归 select * from tableA start with id=475 connect by prior id = pid --从末梢往树ROOT递归 select * from tableA start with id=488 connect by prior pid = id
Oracle最近查询的语句
select sql_text,last_load_time from v$sql order by last_load_time desc; select sql_text,last_load_time from V$SQLAREA order by last_load_time desc;