单行函数
功能简单:
例如:现在希望字母变为大写。这样的功能就能使用单行函数完成。
核心的几个。
字符串函数,数字函数,日期函数,转换函数,通用函数。
要求几下单行函数的名称,返回值类型,接受参数的类型。
字符串函数
转大写 |
字符串 UPPER (字符串 | 数据列) |
转小写 |
字符串 LOWER (字符串 | 数据列) |
示例:
SELECT UPPER('Hello') , LOWER('Hello') FROM dual ; 虚拟表中显示’Hello'
SELECT LOWER(ename) FROM EMP ; 按照小写显示雇员名字
利用这两个特性可以将用户信息变为统一的大写或者小写。
范例:
例如输入‘Smith’要输出‘SMITH’ 的信息。
Oracle 有一种替代操作,
例如:
SELECT * FROM &tablename ;
SELECT * FROM EMP WHERE ename= UPPER('&name') ;
首字母大写,其余字母小写 |
字符串 INITCAP(字符串 | 列) |
计算字符串的长度 |
LENGTH (字符串 |列) |
替换指定字符串的内容, |
字符串REPLACE(字符串 | 列 ,要替换的内容 ,替换的内容) |
截取操作. |
SUBSTR (字符串 | 列 ,截取开始索引) |
|
SUBSTR (字符串 | 列 ,截取开始索引,结束索引) |
去掉左右空格 |
TRIM (字符串 | 列) |
转变首字母大写 SELECT INITCAP(ENAME) FROM EMP ; 计算长度 SELECT LENGTH('Hello') FROM EMP ; SELECT ename , LENGTH(ename) FROM EMP ; SELECT ENAME FROM emp WHERE LENGTH(ENAME)=5; 替换操作 SELECT REPLACE('hello world' , 'l','_') FROM EMP ; SELECT ename,REPLACE(ENAME,'A','_')FROM EMP ; 截取操作 SELECT SUBSTR('Hello world',7) FROM DUAL ; SELECT SUBSTR('Hello world',7,9) FROM DUAL ; 截取开始的时候是从1开始的,不是0 SELECT ENAME,SUBSTR(ename,1,3) FROM emp ; 截取名字前三位 SELECT ENAME,SUBSTR(ename,LENGTH(ENAME)-2,LENGTH(ENAME))FROM EMP ; 截取名字后三位 去掉左右空格的操作 SELECT TRIM(' HELLLO WORLD ') FROM DUAL ;
数字函数:
四舍五入 |
数字 ROUND(数字 |列 ) |
|
数字 ROUND(数字 |列 ,位数) |
日期函数
伪列:SYSDATE SYSTIMESTAMP
日期+数字 = 日期 日期-数字= 日期 日期-日期 = 数字 没有日期+日期
转换函数
1.转字符串数据 : 字符串 TO_CHAR(数字|日期|列,转换)
日期:年(yyyy)月(mm)日(dd)
数字:一位数字(9) ,货币数字(L)
范例将日期格式化为字符串:
SELECT SYSDATE FROM DUAL ; SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM DUAL ;
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh:mi:ss') FROM DUAL ;
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM DUAL ; //24小时计时
用户也可使用TO_CHAR拆分年月日
SELECT TO_CHAR(SYSDATE,'yyyy')year, TO_CHAR(SYSDATE,'MM')months, TO_CHAR(SYSDATE,'DD')day FROM DUAL
查询出所有在二月份雇佣的雇员:
SELECT * FROM EMP WHERE TO_CHAR(hiredate,'mm')='02' ;
格式化数字显示
SELECT TO_CHAR(5242134565313,'999,999,999,999,999,999,999') FROM DUAL ;
SELECT TO_CHAR(5242134565313,'L999,999,999,999,999,999,999') FROM DUAL ;
2.将字符串变为日期 TO_DATE
3.将字符串变为数字 TO_NUMBER()
通用函数
特色函数
主要是Oracle特色函数有两个 NVL() ,DECODE()
1.处理空数据
数字 NVL(列 | 数据 | ,默认值)
范例要求计算每一位雇员的年薪 :
SELECT ename,sal,comm,(sal+comm)*12 FROM emp ;
发现有一部分人没有年薪的。
因为有人没有comm,comm为null现在就要使用NVL函数
SELECT ename,sal,comm,(sal+NVL(comm,0))*12 FROM emp ;
2.多数据判断:数据DECODE(字段|数据,判断数据1,显示数据1,。。。。【默认数据】)
范例:
将所有雇员的职位数据换位中文:
SELECT ename,job, DECODE(job,'CLERK','办事员','未处理') FROM emp ;
上了这个船就要把所有的写出来,不然就默认未处理。