===================字符串函数操作========================
1.
SQL> select upper('smith') from dual ;
UPPER
-----
SMITH
2. 使用upper()函数,将字符变为大写
SQL> select * from emp where ename = upper('Smith') ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
3. 使用lower函数
SQL> select lower('HELLO WORLD') from dual ;
LOWER('HELL
-----------
hello world
4. 第一个单词变成大写
SQL> select initcap('hello world') from dual ;
INITCAP('HE
-----------
Hello World
5. 将查询结果的首字母为大写
SQL> select initcap(ename) from emp ;
INITCAP(EN
----------
Beyond
Jacky
Smith
Allen
Ward
Jones
Martin
Blake
Clark
Scott
King
Turner
Adams
James
Ford
Miller
已选择16行。
6. 字符串连接函数 (和 || 作用相同)
SQL> select concat('hello','world') from dual ;
CONCAT(HE
----------
helloworld
7. 使用substr, length, replace函数,分别用于返回子字符串,程度,替换字符
substr()函数的开始截取点, 从0和从1中开始效果是一样的 ! oracle比较智能,一般程序是从0开始
SQL> select substr('hello',1,3), length('hello'), replace('hello','ll','xx') from dual ;
SUB LENGTH('HELLO') REPLA
--- --------------- -----
hel 5 hexxo
8. 取姓名的后四位
SQL> select substr(ename,length(ename)-3,4) from emp ;
SUBSTR(E
--------
yond
acky
MITH
LLEN
WARD
ONES
RTIN
LAKE
LARK
COTT
KING
RNER
DAMS
AMES
FORD
LLER
9. 取姓名的后3位
SQL> select ename, substr(ename,length(ename)-2) from emp ;
ENAME SUBSTR(ENAME,LENGTH(
---------- --------------------
beyond ond
Jacky cky
SMITH ITH
ALLEN LEN
WARD ARD
JONES NES
MARTIN TIN
BLAKE AKE
CLARK ARK
SCOTT OTT
KING ING
TURNER NER
ADAMS AMS
JAMES MES
FORD ORD
MILLER LER
已选择16行。
10. 也可以这样写比较方便, 从-3的位置, 取3位 (倒序)
SQL> select ename , substr(ename,-3,3) from emp ;
ENAME SUBSTR
---------- ------
beyond ond
Jacky cky
SMITH ITH
ALLEN LEN
WARD ARD
JONES NES
MARTIN TIN
BLAKE AKE
CLARK ARK
SCOTT OTT
KING ING
TURNER NER
ADAMS AMS
JAMES MES
=============================数值函数================================
1. round() 四舍五入
SQL> select round(760.539) from dual ;
ROUND(760.539)
--------------
761
2. 保留两位小数
SQL> select round(760.536,2) from dual ;
ROUND(760.536,2)
----------------
760.54
3. 参数-2 表示从整数的个位数开始四舍五入
SQL> select round(782.376,-2) from dual ;
ROUND(782.376,-2)
-----------------
800
4. trunc()函数不保留任何小数, 也不进行四舍五入
SQL> select trunc(782.678) from dual ;
TRUNC(782.678)
--------------
782
5. 通过trunc()函数查询Jacky的工资, 去掉小数位
SQL> set linesize 300 ;
SQL> select * from emp ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- -
2010 Jacky SalesMan 8001 01-3月 -93 3000.67 20.86 10
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已选择15行。
SQL> select trunc(sal) from emp where ename = 'Jacky' ;
6. 保留两位小数,但不四舍五入
SQL> select trunc(782.368,2) from dual ;
TRUNC(782.368,2)
----------------
782.36
7. 参数为-2, 从个位开始,但不四舍五入为800
SQL> select trunc(782.368,-2) from dual ;
TRUNC(782.368,-2)
-----------------
700
8. mod()函数用于取余数
SQL> select mod(10,3) from dual ;
MOD(10,3)
----------
1