为什么if条款不会返回国籍

时间:2012-07-16 16:27:19

标签: mysql if-statement

在下面的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

为什么? 谢谢。

3 个答案:

答案 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 = ''