0

在我的表中,我正在存储所有者的信息。所有者可以有姓名或国籍或两者兼有。

我必须查询数据库,它检查名称是否存在,然后取名字或国籍。

目前我正在使用以下查询:

SELECT id,name,nationality FROM owners 

没关系,但我想在单列下输入姓名或国籍。

4

4 回答 4

4

您所谓的“自定义列”的一般语法是*expression* AS *column_name*. 例如1 AS one,将为您提供一个名为“one”的列,其值始终为整数“1”。您需要做的是创建一个计算结果为nameor的表达式nationality,并为该表达式指定一个列名。

假设您将空名称存储为NULL,您可以使用:

SELECT id, COALESCE(name, nationality) AS name_or_nationality FROM owners

如果空名称存储为空字符串,则需要使用其他构造:

SELECT id, CASE WHEN name THEN name ELSE nationality END AS name_or_nationality FROM owners
SELECT id, IF(name, name, nationality) AS name_or_nationality FROM owners
于 2012-04-16T06:17:57.953 回答
1

您可以if /else在查询中使用简单条件。

如下所示:

SELECT id,if(name='',nationality,name) as ownerinfo FROM owners 
于 2012-04-16T06:18:26.640 回答
0

如果 name 为 null,则此 SQL select 语句将返回一个值:

SELECT id,
       case when ifnull(name,'') = '' 
       then nationality 
       else name 
       end as name_equiv
FROM owners;
于 2012-04-16T06:18:46.457 回答
0

假设您的值设置为 NULL 而不仅仅是空白:

SELECT IF(name IS NULL, nationality, name) AS name_or_nationality FROM owners

有关 MySQL 中条件语句的解释:http: //timmurphy.org/2009/08/13/inline-if-and-case-statements-in-mysql/

于 2012-04-16T06:24:03.523 回答