进行了相当多的搜索,发现了许多有关如何配置计算列的示例,但对此一无所获。
我有 2 列 - 姓氏和名字。在某些情况下,这些列中的一个或另一个是NULL
。
我的计算列语法是
((CONVERT([varchar](max),[LastName],(0))+', ')+CONVERT([varchar](max),[FirstName],(0))
如果两列都有数据,那效果很好。
但是,当其中一个或另一个是NULL
计算列时,将填充NULL
.
进行了相当多的搜索,发现了许多有关如何配置计算列的示例,但对此一无所获。
我有 2 列 - 姓氏和名字。在某些情况下,这些列中的一个或另一个是NULL
。
我的计算列语法是
((CONVERT([varchar](max),[LastName],(0))+', ')+CONVERT([varchar](max),[FirstName],(0))
如果两列都有数据,那效果很好。
但是,当其中一个或另一个是NULL
计算列时,将填充NULL
.
将字符串与null
将导致连接,请参阅此处null
的备注部分以获取更多详细信息
您应该酌情处理空值
CREATE TABLE People
(
Firstname VARCHAR(50),
Lastname VARCHAR(50) NOT NULL,
Fullname AS CAST(CASE WHEN Firstname IS NOT NULL
THEN Lastname + ', ' + Firstname
ELSE Lastname END AS VARCHAR(105))
)
可以说,它可以是一个没有名字和姓氏的全名,也许这里null
是有道理的
编辑:如果其中一个Firstname
或Lastname
可以为空,那么你会想要做这样的事情
CASE WHEN Firstname IS NULL OR Lastname IS NULL THEN COALESCE(Firstname, Lastname)
ELSE Lastname + ', ' + Firstname END