mysql中if…else的方法

第一种if语句做为表达式使用,语法格式如下:

		IF(expr1,expr2,expr3)

		SELECT
			IF(1>0, '真', '假')
		FROM
			Table

今天终于体会到if的用法,受到该文章启发,可以使用if判断传入一个对象多个属性的多条件判断语句
在这里插入图片描述

    @Query(value = "SELECT * FROM per_hire WHERE IF(?1!='',name=?1,1=1)\n" +
            "                         AND IF(?2!='',sex=?2,1=1)\n" +
            "                         AND IF(?3!='',highest_education=?3,1=1)\n" +
            "                         AND IF(?4!='',if_fresh=?4,1=1)\n" +
            "                         AND IF(?5!='',hire_dept=?5,1=1)\n" +
            "                         AND IF(?6!='',hire_position=?6,1=1)\n" +
            "                         AND IF(?7!='',hire_channel=?7,1=1)\n" +
            "                         AND IF(?8!='',hire_type=?8,1=1)",nativeQuery = true)
    List<PerHire> findper(String name, String sex, String highestEducation,
                          String ifFresh, String hireDept, String hirePosition,
                          String hireChannel, String hireType);

多条件嵌套:

		SELECT
			IF(1>0, IF(2>1, '真', '假'), '假')
		FROM
			Table

CASE WHEN

		SELECT
			CASE 1
				WHEN 1 THEN '字段的值是1'
				WHEN 2 THEN '字段的值是2'
				ELSE '字段的值3'
			END
		FROM
			Table
注意:THEN后边的值与ELSE后边的值类型应一致,否则会报错。

第二种:IF…ELSE…做为流程控制语句使用,语法格式如下:

			IF search_condition THEN 
			 
			    RETURN()
			 
			ELSEIF search_condition THEN 
			 
			    RETURN()
			 
			ELSE 
			 
			    RETURN()
			 
			END IF

例如第N高薪水的完善

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  if N<0 then    
    RETURN (select min(Salary) from Employee);
  else   
    SET N = N-1;
    RETURN (
        select ifnull((select distinct Salary from Employee order by Salary desc limit N,1),null) as NthHighestSalay );
  end if;
END
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐