分享

oracle 学习笔记之函数

 levinLee 2010-07-26
字符函数:
Lower(char):将字符串装换为小写的格式
Upper(char):将字符串装换为大写的格式
length(char):返回字符串的长度
substr(char,m,n):从m开始截取n个字符串
1)查询emp表,名字用小写显示:
select lower(ename) from emp ;
2)查询名字的长度是5个字符的员工:
select * from emp where length(ename)=5;
3)select substr(ename,2,3) from emp;
这样,SMITH就变成了MIT
4)使名字的第一个字符大写,其它字符小写:
select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;
||:这个符号在oracle中是个连接符,就像Java中用“+”连接两个String类型的字串一样。
5)select replace(ename,'A','a') from emp;
把ename字段中的所有‘A’替换成‘a’,当然,这样替换之后仅仅是对查询结果的显示起了作用,不会真的在数据库中作替换的
6)to_date函数
insert into myemp values(7903,'MORFLAME','ANALYST',7566,to_date('1988-1-1','yyyy-mm-dd'),2345.23,555.55,20);
本来oracle的默认日期格式是‘01-1月-1988’,如果不习惯,那么在做插入的时候就可以使用这个函数来用我们喜欢的日期格式做插入,比如to_date(‘1988/1/1’,’yyyy/mm/dd’),这也是可以的。
7)round函数:四舍五入求值
SQL> select round(sal),sal from myemp where ename=
  2  'MORFLAME';

ROUND(SAL)       SAL
---------- ---------
      2345   2345.23
还可以控制小数的位数:
select round(sal,1),sal from myemp where ename='MORFLAME';
ROUND(SAL,1)       SAL
------------ ---------
      2345.2   2345.23
8)trunc函数:不四舍五入,直接舍掉
SQL> select trunc(comm,1),comm from myemp where ename='MORFLAME';

TRUNC(COMM,1)      COMM
------------- ---------
        555.5    555.55
第二个参数是-1的情况
SQL> select round(comm,-1),comm from myemp where ename='MORFLAME';

ROUND(COMM,-1)      COMM
-------------- ---------
           560    555.55
9)ceil函数:求比某个数大的最小整数
SQL> select ceil(comm),comm from myemp where ename='MORFLAME';

CEIL(COMM)      COMM
---------- ---------
       556    555.55
10)floor函数:求比某个数小的最大整数
SQL> select floor(comm),comm from myemp where ename='MORFLAME';

FLOOR(COMM)      COMM
----------- ---------
        555    555.55
11)取模函数mod
SQL> select mod(12,3) from dual;--此处的dual表是个虚拟表,仅仅用来测试函数而已。

MOD(12,3)
----------
         0
12)abs,求绝对值函数
SQL> select abs(-3) from dual;

   ABS(-3)
----------
         3
13)其它数学函数还有:cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan……
14)日期函数
sysdate:返回系统时间
select sysdate from dual;
add_months(d,n):从d这个日期开始加上n个月的日期
求8个月前入职的员工:
select * from myemp where sysdate>add_months(hiredate,8);
求入职天数:
select sysdate-hiredate "入职天数",ename from myemp;
      入职天数 ENAME
---------- ----------
10644.4805 SMITH
10579.4805 ALLEN
8073.48059 MORFLAME
last_day(d):返回指定日期所在月份的最后一天
求在本月的倒数第三天入职的员工:
select ename,hiredate from emp where last_day(hiredate)-2=hiredate;
to_char函数:
SQL> SELECT ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;

ENAME      TO_CHAR(HIREDATE,'YYYY-MM-DDHH
---------- ------------------------------
SMITH      1980-12-17 00:00:00
ALLEN      1981-02-20 00:00:00
WARD       1981-02-22 00:00:00
SQL> SELECT ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99,999.99') from emp;

ENAME      TO_CHAR(HIREDATE,'YYYY-MM-DDHH TO_CHAR(SAL,'L99,999.99')
---------- ------------------------------ -------------------------
SMITH      1980-12-17 00:00:00                        ¥800.00
ALLEN      1981-02-20 00:00:00                      ¥1,600.00
WARD       1981-02-22 00:00:00                      ¥1,250.00
JONES      1981-04-02 00:00:00                      ¥2,975.00
yy:两位数字的年份:2004年->04
yyyy:四位数字的年份
mm:两位数字的月份:8月->08
dd:两位数字的天:30号->30
hh24:24小时制
hh12:12小时制
mi:显示分钟
ss:显示秒
9:显示数字,并忽略前面0
0:显示数字,如位数不足,则用0补齐
.:在指定位置显示小数点
,:在指定位置显示逗号
$:在数字前加美元符号
L:在数字前加本地货币符号
C:在数字前加国际货币符号
G:在指定位置显示组分隔符
D:在指定位置显示小数点符号(.)
如:1980年入职的员工:
SQL> SELECT ename,hiredate,to_char(sal,'L99,999.99') from emp where to_char(hiredate,'yyyy')='1980';

ENAME      HIREDATE    TO_CHAR(SAL,'L99,999.99')
---------- ----------- -------------------------
SMITH      1980/12/17              ¥800.00
sys_context函数:系统函数
terminal:当前会话客户多对应的终端的标识符
language:语言
db_name:数据库名称
nls_date_format:当前会话客户所对应的日期格式
session_user:当前会话客户多对应的数据库用户名
current_schema:当前会话客户所对应的默认方案名
host:返回数据库所在主机的名称
SQL> select sys_context('USERENV','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME
--------------------------------------------------------------------------------
orcl

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

SYS_CONTEXT('USERENV','TERMINA
--------------------------------------------------------------------------------
BLUENIGHT-PC

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

SYS_CONTEXT('USERENV','LANGUAG
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

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

SYS_CONTEXT('USERENV','NLS_DAT
--------------------------------------------------------------------------------
DD-MON-RR

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

SYS_CONTEXT('USERENV','SESSION
--------------------------------------------------------------------------------
SCOTT

SQL> select sys_context('USERENV','current_schema') from dual;
SYS_CONTEXT('USERENV','CURRENT
--------------------------------------------------------------------------------
SCOTT

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

SYS_CONTEXT('USERENV','HOST')
--------------------------------------------------------------------------------
WORKGROUP\BLUENIGHT-PC

补充:
取得某个字符的ASCII码:
select ascii(‘A’) from dual;这是取得字符A的ASCII码值

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多