MySQL使用IF语句实现空值替换条件列失效问题求助
解决SQL中null值判断的问题
嘿,我来帮你搞定这个问题!你遇到的问题根源在于SQL里不能用=来判断null值——因为null代表“未知”,和任何值做相等比较都会返回null,你的if(fname = null,lname,fname)条件永远不会触发true分支,所以哪怕fname是null,也只会返回fname(也就是null)。
这里有两种靠谱的解决办法:
方法1:修正IF语句的判断条件
把fname = null改成fname is null,这是SQL里判断null的标准写法:
select if(fname is null, lname, fname) as name from actor;
方法2:使用COALESCE函数(更简洁)
COALESCE函数的作用就是返回参数列表里第一个非null的值,完美匹配你的需求:
select coalesce(fname, lname) as name from actor;
这个写法更简洁,而且几乎所有主流数据库(MySQL、PostgreSQL、SQL Server等)都支持它。
内容的提问来源于stack exchange,提问作者DockYard
相关产品推荐
相关产品推荐

