现在的位置: 首页 > 综合 > 正文

函数

2018年05月26日 ⁄ 综合 ⁄ 共 2929字 ⁄ 字号 评论关闭

函数

字符函数

lower(char):将字符串转化为小写的格式

upper (char):将字符串转化为大写的格式

length(char):字符的长度

substr(char,m,n):m从第几m个开始取,n取n个

replace(char1,search_string,replace_string)

instr(char1,char2,[,n[,m]])取子串在字符串的位置

以首字符大写显示员工的名称

SQL> select upper(substr(ename,1,1))||lower( substr(ename,2,length(ename)-1) ) from emp;

UPPER(SUBSTR(ENAME,1,1))||LOWE

------------------------------

Smith

Allen

 

数学函数

round(n,[m]):四舍五入

trunk(n,[m]):不四舍五入,直接截取小数点m位,不写就截取到整数

mod(m,n):取模,就是取余数

floor(n)返回小于或等于n的最大整数,向下取整

ceil(n)返回大于或等于n的最小整数,向上取整

 

日期函数

to_date

SQL> insert into student(xm,birthday)values('小王',to_date('1998-12-12','yyyy-mm-dd'));

1 row inserted

sysdate :系统时间

dualoracle的测试表

SQL> select sysdate from dual;

SYSDATE

-----------

2011-05-04

 

add_months(d,n)加月

last_day最后一天

 

查询入职8个多月的员工

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

 

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

----- ---------- --------- ----- ----------- --------- --------- ------

 7369 SMITH      CLERK      7902 1980-12-17     800.00               20

 7499 ALLEN      SALESMAN   7698 1981-02-20    1600.00    300.00     30

 

对于每个员工,显示加入公司的天数

SQL> select trunc(sysdate-hiredate) "入职时间",ename from emp;

入职时间 ENAME

---------- ----------

     11095 SMITH

     11030 ALLEN

 

找出各个月倒数第3天受雇的所有员工

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

HIREDATE    ENAME

----------- ----------

1981-09-28  MARTIN

 

转换函数:

oracle会自动的对数据进行隐形转换

to_char

日期显示时,分,秒

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

ENAME      TO_CHAR(HIREDATE,'YYYY-MM-DDHH TO_CHAR(SAL,'L99999.99')

---------- ------------------------------ ------------------------

SMITH      1980-12-17 00:00:00                      800.00

ALLEN      1981-02-20 00:00:00                     1600.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

 

时间表示格式

yy:两位数的年份

yyyy:四位数的年份

mm:两位数的月份

dd:两位数的天

hh24 :24进制的小时

hh12:12进制的小时

mi:分

ss:秒

 

9:显示数字,并忽略前面的0

0:显示数字,如果位数不足,则补齐

.:在指定位置显示小数点

,在指定位置显示逗号

$:在数字前加美元

L:在数字前加本地的货币符号

C:在数字前加国际货币符号

G:在指定位置显示组分隔符

D: 在指定位置显示小数点符号(.)

 

显示1980年入职的人

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

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

----- ---------- --------- ----- ----------- --------- --------- ------

 7369 SMITH      CLERK      7902 1980-12-17     800.00               20

 

cast

转换一个栏位或值

语法:cast(栏位名/ as数据类型
)

参数解释:1)栏位名/              表中的栏位名

                   2)数据类型               转换后的数据类型

cast(sum(manage_fee) as numeric(20, 3)

系统函数

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

抱歉!评论已关闭.