轉換函數(Conversion Functions)有兩個類型
- Implicit隱性資料型態轉換
- Explict顯性資料型態轉換
排序函數有三種
- ROW_NUMBER
- RANK
- DENSE_RANK
Implicit資料型態轉換函數
- Assignments敘述時,自動轉換下列
FROM | TO |
VARCHAR or CHAR | INT |
VARCHAR or CHAR | DATE |
INT | VARCHAR |
DATE | VARCHAR |
- Expression 敘述時,自動轉換下列
FROM | TO |
VARCHAR or CHAR | INT |
VARCHAR or CHAR | DATE |
EXPLICIT資料型態轉換函數
- 語法1:CAST (EXPRESSION AS 欲轉換之型態寬度)顯性
--Implict VS Explict 轉換
SELECT 2 + '3'
SELECT 2 + CAST( '3' AS INT)
- 語法2:CONVERT(欲轉專型態(寬度),EXPRESSION , 樣式)
日期樣式(style): 101 mm/dd/yyy
102 yy.mm.dd
還有更多可以線上查到
--轉換 員工之 hire_date 日期格式
SELECT last_name, hire_date,
CONVERT ( VARCHAR ( 40 ), hire_date, 102 ) AS HIREDATE
FROM employees;
- Case函數,情況判斷函數
--轉換 員工 commission_pct 空值者轉為 0
SELECT last_name, salary, commission_pct, ISNULL( commission_pct, 0 )
FROM employees;
--CASE函數 依 員工 job_id 調整 salary
SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10 * salary
WHEN 'ST_CLERK' THEN 1.15 * salary
WHEN 'SA_REP' THEN 1.20 * salary
ELSE salary
END "REVISED_SALARY"
FROM employees;
--CASE函數另一種寫法 依 員工 job_id 調整 salary
SELECT last_name, job_id, salary,
CASE WHEN job_id = 'IT_PROG' THEN 1.10 * salary
WHEN job_id = 'ST_CLERK' THEN 1.15 * salary
WHEN job_id ='SA_REP' THEN 1.20 * salary
ELSE salary
END "REVISED_SALARY"
FROM employees;
排序函數
- ROW_NUMBER :由高到低排序,一樣仍然繼續排下來
- RANK :由高至低排序,遇到一樣,兩個印出並跳過下一名
- DENSE_RANK :由高至低排序,遇到一樣,兩個印出並接著印出下一名
--ROW_NUMBER 函數, 依 員工 薪資 salary 排行, 從 高到低
SELECT last_name, SALARY ,
ROW_NUMBER() OVER ( ORDER BY salary DESC)
FROM employees
--RANK 函數, 依 員工 薪資 salary 排行, 從 高到低
SELECT last_name, SALARY ,
RANK() OVER ( ORDER BY salary DESC)
FROM employees
--DENSE_RANK 函數, 依 員工 薪資 salary 排行, 從 高到低
SELECT last_name, SALARY ,
DENSE_RANK() OVER ( ORDER BY salary DESC)
FROM employees