在我的表中,我正在存储所有者的信息。所有者可以有姓名或国籍或两者兼有。
我必须查询数据库,它检查名称是否存在,然后取名字或国籍。
目前我正在使用以下查询:
SELECT id,name,nationality FROM owners
没关系,但我想在单列下输入姓名或国籍。
您所谓的“自定义列”的一般语法是*expression* AS *column_name*
. 例如1 AS one
,将为您提供一个名为“one”的列,其值始终为整数“1”。您需要做的是创建一个计算结果为name
or的表达式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
您可以if /else
在查询中使用简单条件。
如下所示:
SELECT id,if(name='',nationality,name) as ownerinfo FROM owners
如果 name 为 null,则此 SQL select 语句将返回一个值:
SELECT id,
case when ifnull(name,'') = ''
then nationality
else name
end as name_equiv
FROM owners;
假设您的值设置为 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/