Oracle之单行函数

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
			
		

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值