函数名 描述 实例
    IF(expr,v1,v2) 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。 SELECT IF(1 > 0,’正确’,’错误’) ->正确
    IFNULL(v1,v2) 如果 v1 的值为 NULL,则返回 v2,否则返回 v1。 SELECT IFNULL(null,’Hello Word’) ->Hello Word
    ISNULL(expression) 判断表达式是否为 NULL SELECT ISNULL(NULL); ->1
    NULLIF(expr1, expr2) 比较两个参数是否相同,如果参数 expr1 与 expr2 相等 返回 NULL,否则返回 expr1 SELECT NULLIF(25, 25); ->
    COALESCE(expr1, expr2, …., expr_n) 返回参数中的第一个非空表达式(从左向右) SELECT COALESCE(NULL, NULL, NULL, ‘bjsxt.com’, NULL, ‘google.com’); -> bjsxt.com
    CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 … WHEN conditionN THEN resultN ELSE result END CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。 SELECT CASE ‘oldlu’ WHEN ‘oldlu’ THEN ‘OLDLU’ WHEN ‘admin’ THEN ‘ADMIN’ ELSE ‘kevin’ END;

    示例一:
    查询部门编号是50或者80的员工信息,包含他们的名字、薪水、佣金。在income列中,如果有佣金则显示‘SAL+COMM’,无佣金则显示’SAL’。
    SELECT last_name, salary, commission_pct, if(ISNULL(commission_pct),
    ‘SAL’,’SAL+COMM’) income
    FROM employees
    WHERE department_id IN (50, 80);

    示例二:
    计算雇员的年报酬,你需要用 12 乘以月薪,再加上它的佣金 (等于年薪乘以佣金百分比)。
    SELECT last_name, salary, IFNULL(commission_pct, 0), (salary12) (salary12*IFNULL(commission_pct, 0)) AN_SAL FROM employees;

    示例三:
    查询员工表,显示他们的名字、名字的长度该列名为expr1,姓氏、姓氏的长度该列名为expr2。在result列中,如果名字与姓氏的长度相同则显示空,如果不相同则显示名字长度。
    SELECT first_name, LENGTH(first_name) “expr1”, last_name, LENGTH(last_name) “expr2”, NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM employees;

    示例四:
    查询员工表,显示他们的名字,如果 COMMISSION_PCT 值是非空,显示它。如果COMMISSION_PCT 值是空,则显示 SALARY 。如果 COMMISSION_PCT 和SALARY 值都是空,那么显示 10。在结果中对佣金列升序排序。
    SELECT last_name,
    COALESCE(commission_pct, salary, 10) comm
    FROM employees
    ORDER BY commission_pct;

    示例五:
    查询员工表,如果 JOB_ID 是 IT_PROG,薪水增加 10%;如果 JOB_ID 是 ST_CLERK,薪水增加 15%;如果 JOB_ID 是 SA_REP,薪水增加 20%。对于所有其他的工作角色,不增加薪水。
    SELECT last_name, job_id, salary,
    CASE job_id WHEN ‘IT_PROG’ THEN 1.10salary
    WHEN ‘ST_CLERK’ THEN 1.15
    salary
    WHEN ‘SA_REP’ THEN 1.20*salary
    ELSE salary END “REVISED_SALARY”
    FROM employees;