SQL中的FirstName,LastName太复杂了?

时间:2009-12-05 03:22:46

标签: sql sql-server tsql

这个SQL看起来很复杂,当一个或两个字段可以为NULL时,有更简单的方法来获取FirstName,LastName吗?

SELECT COALESCE(LastName,'')+
       CASE WHEN LastName+FirstName IS NOT NULL THEN ', ' END+
       COALESCE(FirstName,'') AS Name
FROM Person

3 个答案:

答案 0 :(得分:13)

怎么样

SELECT COALESCE(LastName + ', ' + FirstName, 
                LastName, FirstName) Name
FROM Person

如果firstnamelastname为空,则整个第一个表达式(带有,)变为null,强制coalesce检查,其次,仅lastname,然后如果lastname为空,最后只有firstname

答案 1 :(得分:1)

如果您经常使用此形式的名称,则可以使用peristed计算列在表格中预先计算此值。如果您需要,该列甚至可以编入索引。

ALTER TABLE A
ADD [person_name_last_first]  AS COALESCE(LastName + ', ' + FirstName, 
                LastName, FirstName) PERSISTED

最大的优点是您永远不必再次编写这段代码,名称将始终显示,并且只有在添加或更改名字和姓氏时才使用数据库时间来执行此操作。

答案 2 :(得分:-3)

我认为这根本不复杂...... 在MSSQL上,您可以执行类似

的操作
SELECT Isnull(LastName,'') + ', ' + Isnull(FirstName,'')
FROM Person