MySQL,合并空值的等价物?

GSt*_*Sto 53 mysql sql

我知道coalesce将返回传递给它的第一个非null值.是否有类似的东西将返回第一个非空/非假值?

例:

select FunctionIWant(0,'','banana') as fruit;  //returns banana.
Run Code Online (Sandbox Code Playgroud)

Fed*_*TIK 163

您可以在MySQL中从空字符串中创建NULL:

SELECT coalesce(NULLIF(email, ''), 'user@domain.com') FROM users WHERE id=1000000;
Run Code Online (Sandbox Code Playgroud)

  • 简单,优雅,比其他解决方案容易得多,并且仍然允许我使用`COALESCE`! (12认同)
  • 令人惊讶的是,我将此用于自定义"优先级"排序与FIND_IN_SET()=> ORDER BY COALESCE(NULLIF(FIND_IN_SET(id,'12,45,11'),0),999999999)ASC,名称ASC (3认同)

OMG*_*ies 12

使用ANSI CASE语句/表达式:

SELECT CASE 
         WHEN LENGTH(col) = 0 OR col IS NULL THEN 'banana'
         ELSE col
       END AS fruit
Run Code Online (Sandbox Code Playgroud)

SQL或MySQL中没有布尔值.MySQL实际上将值存储为INT,值为零或一:

SELECT CASE 
         WHEN col = 0 THEN 'banana'
         ELSE col
       END AS fruit
Run Code Online (Sandbox Code Playgroud)