在下面的SQL select语句中,如果name为null,我希望打印国籍,并且我有一个SQL子句,如果语法有效,但我没有看到下面的国籍打印出来:
table test2
id integer
case integer
nationality char(10)
name char(24)
1 1 france ""
2 2 england john
select t.id,
if(t.name is null, t.nationality, t.name)
as name_equivalent
from test2 t;
产生 id name_equivalent
1 ""
2 john
为什么? 谢谢。
答案 0 :(得分:2)
您正在检查名称是否为空,但它被设置为空字符串。要检查两者,您需要:
if(t.name is null or t.name='', t.nationality, t.name)
答案 1 :(得分:2)
null
不等于空字符串。空字符串''
是有效的数据形式,null
表示没有数据存在。
尝试
if (t.name is null or t.name='', t.nationality, t.name)
或者将第一列中的名称设为null
1 1 france null
答案 2 :(得分:1)
看起来法国的名字字段实际上是一个空字符串,而不是空字符串。您还需要在select语句中将其视为空。例如t.name = ''