mysql中的字符串判断语句(非空判断替换转换)

  • Post author:
  • Post category:mysql


方法一.CASE函数

CASE

WHEN value1 THEN returnvalue1

WHEN value2 THEN returnvalue2

WHEN value3 THEN returnvalue3

…… ELSE defaultvalue

END

方法二.IF()函数

CASE函数可以实现非常复杂的逻辑判断,实现满足条件就A,否则就B这样简单的判断逻辑的话,CASE函数就显得臃肿。MYSQL提供了IF()函数用于简化这种逻辑判断,其语法格式如下:IF(condition,A,B)

如果condition条件为真,就返回A,否则返回B。所以如果有多个条件,就无法使用IF函数。IF()返回一个数字或字符串。

if(xingjuriqi=”,null,xingjuriqi)

MySQL判断字符串为NULL或者为空字符串

函数名 说明
ISNULL(expr) 如果expr为null返回值1,否则返回值为0
IFNULL(expr1,expr2) 如果expr1值为null返回expr2的值,否则返回expr1的值
NULLIF(expr1,expr2) 如果expr1==expr2返回值为null,否则返回expr1的值;相当于

case when expr1=expr2 then null else expr1 end
COALESCE 返回传入的参数中第一个非null的值
IF(expr1,expr2,expr3) 如果expr1的值为true,则返回expr2的值,否则返回expr3的值

例:

查找学生姓名不为null的学生信息


  • SELECT * FROM student WHERE ISNULL(stu_name) <1

  • SELECT * FROM student WHERE stu_name is not null

查询学生成绩,若score为null则返回0


  • SELECT IFNULL('score',0) FROM stu_score

  • SELECT COALESCE('score',0) FROM stu_score

  • SELECT IF(IFNULL('score',null)=null,0,score) FROM stu_score

  • SELECT CASE WHEN score is null THEN 0 ELSE score END AS score FROM stu_score