Oracle中的sql函数

1.字符函数

lower(string) upper() length() substr() replace(字段,src,dest)

select substr(ename,1,3) from emp;

从第几个开始,取几个字符

SQL> select ename from emp;

ENAME
--------------------
tazi
SMITH
ALLEN
WARD
JONES
MARTIN

SQL> select substr(ename,1,3) from emp;

SUBSTR(ENAME,1,3)
------------------------
taz
SMI
ALL
WAR
JON

2.数学函数

round(n,[m]) 四舍五入,m表示保留几位小数,m为负数则截取到小数点前多少位

trunc(n,[m]) 截取,m表示保留几位小数

floor()

ceil()

SQL> select mod(10,3) from dual;

MOD(10,3)
----------
         1

3.日期函数

oracle默认的日期格式 dd-mm-yy,中文是02-1月-2012

SQL> select sysdate from dual;

SYSDATE
--------------
03-1月 –12

addmonths(d,n)

查找入职8个月以上的员工

select * from emp where sysdate>add_months(hiredate,8);

last_day(d)表示d日期所在的月的倒数第一天对应的日期

查找在一个月的倒数第三天入职的员工

select ename from emp where hiredate=last_day(hiredate)-2;

4.转换函数

把数据按照某种特定的格式显示

SQL> select ename,to_char(hiredate,'yyyy-mm-dd hh24:mm:ss') from emp;

ENAME                TO_CHAR(HIREDATE,'YYYY-MM-DDHH24:MM:SS
-------------------- --------------------------------------
tazi
SMITH                1980-12-17 00:12:00
ALLEN                1981-02-20 00:02:00

对货币类型的数据格式化

SQL> desc emp;
名称                                      是否为空? 类型
----------------------------------------- -------- --------------------
SAL                                                NUMBER(7,2)

select ename,to_char(sal,'L99,999.99') from emp;  //L表示本地,可以换成’$’等

ENAME                TO_CHAR(SAL,'L99,999.99')
-------------------- ---------------------------------
tazi                            ¥900.00
SMITH                           ¥800.00
ALLEN                         ¥1,600.00
WARD                          ¥1,250.00
JONES                         ¥2,975.00
MARTIN                        ¥1,250.00

99999.99是因为该字段是NUBER(7,2)类型

显示1980年入职的员工

SQL> select ename from emp where to_char(hiredate,'yyyy')=1980;  /*Oracle会自动转换类型*/

ENAME
--------------------
SMITH

SQL> select ename from emp where to_char(hiredate,'yyyy')='1980';

ENAME
--------------------
SMITH

5.系统函数

sys_context()

SQL> select sys_context('USERENV','current_user') from dual;

SYS_CONTEXT('USERENV','CURRENT_USER')
-----------------------------------------------------------------

SCOTT

select sys_context('USERENV','current_schema')from dual;

db_name language nls_date_format当前会话的日期格式 host数据库所在主机名

SQL> select sys_context('USERENV','host') from dual;

SYS_CONTEXT('USERENV','HOST')
-------------------------------------------------------

WORKGROUP\TAZI-PC



 

 

 

 

 

 

posted @ 2012-01-04 09:28  tazi  阅读(216)  评论(0编辑  收藏  举报