每行选择非空列

时间:2012-02-09 13:45:55

标签: sql sql-server

我正在使用一个包含“Name”,“FirstName”和“Surname”字段的表。

“名称”在几年前使用过,但仍然受到支持。

今天虽然使用了“FirstName”和“Surname”字段。

这是我想在这张桌子上查询的内容。如果FirstName和/或Surname不是Null,那么我希望它们返回行,否则我想要Name。

FirstName和Surname可以与之间的空格连接,在返回的结果中只提供一个字段。或许你有更好的解决方案。

谢谢!

百里

2 个答案:

答案 0 :(得分:5)

这可以通过使用COALESCE

来完成
SELECT COALESCE(Firstname + ' ' + Surname, Name)
FROM   ATable

或使用ISNULL

SELECT ISNULL(Firstname + ' ' + Surname, Name)
FROM   ATable

如果姓氏姓氏可以是NULL,并且您想要返回其中一个,则可以使用COALESCE

SELECT COALESCE(Firstname + ' ' + Surname, Firstname, Surname, Name)
FROM   ATable

COALESCE

  

返回其参数中的第一个非空表达式。

答案 1 :(得分:2)

SELECT CASE
       WHEN [FirstName] IS NULL OR [Surname] IS NULL THEN [Name]
       ELSE [FirstName] + ' ' + [Surname]
       END AS [Name]
  FROM MyTable