大小写控制函数
LOWER('SQL Course')
UPPER('SQL Course')
INITCAP('SQL Course')
显示员工 Higgins的信息:
SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'higgins';
no rows selected
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'higgins';
字符控制函数
1.CONCAT('Hello', 'World')
2.SUBSTR('HelloWorld',1,5)
3.LENGTH('HelloWorld')
4.INSTR('HelloWorld', 'W')
5.LPAD(salary,10,'*')
6.RPAD(salary, 10, '*')
7.TRIM('H' FROM 'HelloWorld')
结果如下:
1.HelloWorld
2.Hello
3.10
4.6
5.*****24000
6.24000*****
7.elloWorld
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name),
INSTR(last_name, 'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id, 4) = 'REP';
数字函数
ROUND(45.926, 2) →45.93
TRUNC(45.926, 2) →45.92
MOD(1600, 300) →100
ROUND函数
SELECT ROUND(45.923,2), ROUND(45.923,0),
ROUND(45.923,-1)
FROM DUAL;
DUAL 是一个‘伪表’,可以用来测试函数和表达式
日期的数学运算
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;
当前时间减去 7 小时的时间
select sysdate - interval '7' hour from dual
当前时间减去 7 天的时间
select sysdate - interval '7' day from dual
当前时间减去 7 月的时间
select sysdate,sysdate - interval '7' month from dual
当前时间减去 7 年的时间
select sysdate,sysdate - interval '7' year from dual
时间间隔乘以一个数字
select sysdate,sysdate - 8 *interval '2' hour from dual
Assume SYSDATE = '25-JUL-95':
转换函数
隐式数据类型转换
Oracle 自动完成下列转换:
显式数据类型转换
TO_CHAR 函数对日期的转换
格式:
日期格式元素
HH24:MI:SS AM 15:45:32 PM
当前时间减去 7 分钟的时间
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
TO_CHAR 函数对数字的转换
下面是在TO_CHAR 函数中经常使用的几种格式:
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';
字符到日期操作
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
TO_NUMBER 使用TO_NUMBER函数将字符转换为数字
TO_NUMBER(char[, '格式'])
oracle有毫秒级的数据类型 --返回当前时间 年月日小时分秒毫秒
select to_char(current_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual;
--返回当前时间的秒毫秒,可以指定秒后面的精度(最大=9)
select to_char(current_timestamp(9),’MI:SSxFF’) from dual;