Oracle:
单行函数:
LOWER()
UPPER()
SUBSTR(LAST_NAME,3) //从指定位置截取到末尾
SUBSTR(LAST_NAME,3,2) //从指定位置截取指定长度
SUBSTR(LAST_NAME,-3,2) //从倒数第3位截取指定长度
INSTR(LAST_NAME,'a') //在第一个参数中查找第二个参数首次出现的位置,找不到返回0
LENGTH('中国') //获得字符数
LENGTHB('中国') //获得字节数
SELECT TRIM(' ABC ABC ') AS A //去掉字符串两端的空格
SELECT TRIM('A' FROM 'AAABCABCAAA') AS A //去掉字符串两端的制定的字符
LPAD()/RPAD(()
SELECT LPAD(EMPLOYEE_ID,6,0) FROM EMPLOYEES; //显示EMPLOYEE_ID6位长度,不足在左边补0
ROUND() //四舍五入
TRUNC() //截取数字
MOD()
SELECT MOD(15,2) FROM DUAL //取余数
SYSDATE //系统时间
SELECT SYSDATE FROM DUAL
SELECT SYSDATE+1000 FROM DUAL
SELECT SYSDATE-1000 FROM DUAL
SELECT TRUNC(SYSDATE-HIRE_DATE) FROM EMPLOYEES
--MONTHS_BETWEEN() //计算两个日期相差的月数
SELECT MONTHS_BETWEEN(SYSDATE,HIRE_DATE) FROM EMPLOYEES
ADD_MONTHS() //日期加上指定的月数
SELECT ADD_MONTHS(SYSDATE,-100) FROM DUAL
TO_CHAR(D,F) //将日期类型的值D根据模板F转换成字符串
SELECT TO_CHAR(HIRE_DATE,'YYYY-MM-DD DAY')
TO_CHAR(N,F) //将数字类型的N根据模板F转换成字符类型的值
SELECT TO_CHAR(256987.365,'$99,999,999.00') FROM DUAL
TO_DATE(S,F) //根据模板F将字符类型转成日期类型
TO_NUMBER(S,F) //将字符类型S按照模板F转成数字类型
SELECT TO_NUMBER('¥10,000.00','L99,999.00') FROM DUAL
NVL() //当第一个参数不为NULL,返回第一个参数。当第一个参数为NULL,返回第二个参数。两个参数类型必须一致
SELECT NVL(TO_CHAR(COMMISSION_PCT,'FM0.00'),'没有佣金') FROM EMPLOYEES
SELECT NVL2(COMMISSION_PCT,'有佣金','没有佣金') FROM EMPLOYEES
CASE 表达式:
SELECT LAST_NAME,JOB_ID,SALARY,
CASE
WHEN JOB_ID ='IT_PROG' THEN
SALARY*1.1
WHEN JOB_ID ='ST_CLERK' THEN
SALARY*1.2
WHEN JOB_ID ='SA_REP' THEN
SALARY*1.3
ELSE SALARY
END AS 新工资
FROM EMPLOYEES
SELECT LAST_NAME,JOB_ID,SALARY,
CASE JOB_ID
WHEN 'IT_PROG' THEN SALARY*1.1
WHEN 'ST_CLERK' THEN SALARY*1.5
WHEN 'SA_REP' THEN SALARY*1.2
ELSE SALARY
END AS 新工资
FROM EMPLOYEES;
//查询employees表中所有员工的last_name,hire_date(格式 1999-10-1),星期,
查询结果根据星期升序排列(要求:星期一作为一周的开始)
SELECT LAST_NAME,TO_CHAR(HIRE_DATE,'YYYY-MM-DD'),TO_CHAR(HIRE_DATE,'DAY')
FROM EMPLOYEES
ORDER BY TO_CHAR(HIRE_DATE-1,'D') ASC;
//查询employees 表中所有员工的last_name,hire_date(格式:YYYY-MM-DD),工龄(只保留整数),奖金
工龄超过20年(不含),奖金为10倍工资
工龄超过23年(不含),奖金为15倍工资
工龄超过25年(不含),奖金为20倍工资
其他无奖金
SELECT LAST_NAME,TO_CHAR(HIRE_DATE,'YYYY-MM-DD'),TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE)/12),
CASE
WHEN MONTHS_BETWEEN(SYSDATE,HIRE)/12>25 THEN SALARY*20
WHEN MONTHS_BETWEEN(SYSDATE,HIRE)/12>23 THEN SALARY*15
WHEN MONTHS_BETWEEN(SYSDATE,HIRE)/12>20 THEN SALARY*10
ELSE 0
END AS 奖金
FROM EMPLOYEES