这个SQL看起来很复杂,当一个或两个字段都可以为NULL时,是否有一种更简单的方法来获取FirstName,LastName?SQL中的名字,姓氏太复杂?
SELECT COALESCE(LastName,'')+
CASE WHEN LastName+FirstName IS NOT NULL THEN ', ' END+
COALESCE(FirstName,'') AS Name
FROM Person
这个SQL看起来很复杂,当一个或两个字段都可以为NULL时,是否有一种更简单的方法来获取FirstName,LastName?SQL中的名字,姓氏太复杂?
SELECT COALESCE(LastName,'')+
CASE WHEN LastName+FirstName IS NOT NULL THEN ', ' END+
COALESCE(FirstName,'') AS Name
FROM Person
如何
SELECT COALESCE(LastName + ', ' + FirstName,
LastName, FirstName) Name
FROM Person
如果firstname
或lastname
为null整个第一表达(与,
)变为零,迫使聚结以单独检查,第二,所述lastname
,然后,如果lastname
为空,最后单独为firstname
。
我不认为这是复杂的,在所有... 在MSSQL您可以通过使用peristed计算列,如果你要使用像做
SELECT Isnull(LastName,'') + ', ' + Isnull(FirstName,'')
FROM Person
您可以在表中预先计算这这种形式的名字往往是。如果你需要的话,该列甚至可以被编入索引。
ALTER TABLE A
ADD [person_name_last_first] AS COALESCE(LastName + ', ' + FirstName,
LastName, FirstName) PERSISTED
最大的好处是,你再也不用写这篇文章的代码,名称将持续显示并添加姓氏和名字时,你只能使用数据库的时间来执行此操作或改变。
+1,nb,这在所有平台上都可用,语法略有不同 – Hogan 2013-05-31 14:08:17
如果您经常需要像这样显示名称,创建一个持久性计算字段可能是值得的。 – HLGEM 2013-05-31 13:37:52
@HLGEM - 有趣的,也许一个答案会明确你的建议? – Hogan 2013-05-31 13:39:29