函数
字符函数
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 :系统时间
dual是oracle的测试表
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 |