1、字符函数
(1)大小写转换
SQL> select lower('HELLO') 小写,upper('hello') 大写,initcap('hello world') 首字母大写 from dual;
小写 大写 首字母大写
----- ----- -----------
hello HELLO Hello World
(2)字符串连接
SQL> select concat('hello','world') from dual;
CONCAT('HE
----------
helloworld
(3)字符串截取
<1>从某位开始截取剩下的字符
SQL> select substr('adasdfsafsafasfa',4) from dual;
SUBSTR('ADASD
-------------
sdfsafsafasfa
<2>从某位开始截取n个字符
SQL> select substr('adasdfsafsafasfa',4,6) from dual;
SUBSTR
------
sdfsaf
(4)字符串长度
SQL> select length('你好world') 字符长度,lengthb('你好world') 字节长度 from dual;
字符长度 字节长度
---------- ----------
7 9
(5)查找子字符串的位置,未找到返回0
SQL> select instr('adfgsdagaabhffdaafaa','ff') from dual;
INSTR('ADFGSDAGAABHFFDAAFAA','FF')
----------------------------------
13
(6)字符串填充
SQL> select lpad('abc',10,'*') lpad,rpad('abc',10,'#') rpad from dual;
LPAD RPAD
---------- ----------
*******abc abc#######
(7)去掉前后指定字符
SQL> select trim('a' from 'afffffffa') trim from dual;
TRIM
-------
fffffff
2、数字函数
(1)四舍五入
SQL> select round(123.456,2) AA,round(123.456,1) BB,round(123.456,0) CC,
2 round(123.456,-1) DD,round(123.456,-2) EE,round(123.456,-3) FF
3 from dual;
AA BB CC DD EE FF
---------- ---------- ---------- ---------- ---------- ----------
123.46 123.5 123 120 100 0
3、日期函数
(1)查询员工的入职时间,按照 周 月 年 方式显示
SQL> select ename,(sysdate-hiredate)/7 周, (sysdate-hiredate)/30 月, (sysdate-hiredate)/365 年
2 from emp;
ENAME 周 月 年
---------- ---------- ---------- ----------
SMITH 1912.52191 446.255113 36.6785024
ALLEN 1903.2362 444.088446 36.5004202
WARD 1902.95048 444.02178 36.4949408
JONES 1897.37906 442.72178 36.3880915
MARTIN 1871.80763 436.755113 35.8976805
BLAKE 1893.2362 441.755113 36.3086394
CLARK 1887.66477 440.455113 36.2017901
SCOTT 1581.95048 369.12178 30.3387764
KING 1864.66477 435.088446 35.7606942
TURNER 1874.66477 437.42178 35.952475
ADAMS 1577.09334 367.988446 30.2456257
JAMES 1862.37906 434.555113 35.7168586
FORD 1862.37906 434.555113 35.7168586
MILLER 1855.09334 432.855113 35.5771326
已选择14行。
(2)精确计算员工入职的月份
SQL> select ename, (sysdate-hiredate)/30 估计月, MONTHS_BETWEEN(sysdate, hiredate) 精确计算月 from emp;
ENAME 估计月 精确计算月
---------- ---------- ----------
SMITH 446.255157 439.859829
ALLEN 444.08849 437.763055
WARD 444.021823 437.698539
JONES 442.721823 436.3437
MARTIN 436.755157 430.50499
BLAKE 441.755157 435.375958
CLARK 440.455157 434.117894
SCOTT 369.121823 363.795313
KING 435.08849 428.859829
TURNER 437.421823 431.150152
ADAMS 367.98849 362.666281
JAMES 434.555157 428.311442
FORD 434.555157 428.311442
MILLER 432.855157 426.666281
已选择14行。
4、数据类型转换
(1)日期类型的相关转换
<1>隐式类型转换
SQL> select * from emp
2 where hiredate > '01-1月 -81';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ---------
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
已选择13行。
<2>显式类型的转换
方式一:
SQL> select * from emp
2 where hiredate > to_date('1981-01-01 02:03:04', 'yyyy-mm-dd hh24:mi:ss');
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ---------
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
已选择13行。
方式二:
SQL> select * from emp
2 where to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss') > '1981-01-01 02:03:04';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ---------
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
已选择13行。
(2)数字和字符串转换
<1>查询员工的薪水,按照“两位小数 本地货币代码 千位符”的格式显示
SQL> select empno, ename, to_char(sal, 'L9,999.99') from emp;
EMPNO ENAME TO_CHAR(SAL,'L9,999
---------- ---------- -------------------
7369 SMITH ¥800.00
7499 ALLEN ¥1,600.00
7521 WARD ¥1,250.00
7566 JONES ¥2,975.00
7654 MARTIN ¥1,250.00
7698 BLAKE ¥2,850.00
7782 CLARK ¥2,450.00
7788 SCOTT ¥3,000.00
7839 KING ¥5,000.00
7844 TURNER ¥1,500.00
7876 ADAMS ¥1,100.00
7900 JAMES ¥950.00
7902 FORD ¥3,000.00
7934 MILLER ¥1,300.00
已选择14行。
<2>把这个字符¥1,250.00转成数字
SQL> select to_number('¥1,250.00', 'L9,999.99') from dual;
TO_NUMBER('¥1,250.00','L9,999.99')
-----------------------------------
1250
Oracle之单行函数
最新推荐文章于 2022-11-16 17:48:14 发布