SQL中的FirstName,LastName太复杂了?

Hog*_*gan 4 sql t-sql sql-server

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

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

Cha*_*ana 13

怎么样

SELECT COALESCE(LastName + ', ' + FirstName, 
                LastName, FirstName) Name
FROM Person
Run Code Online (Sandbox Code Playgroud)

如果firstname或者lastname为null,整个第一个表达式(带有,),变为null,强制coalesce检查,第二个,lastname单独,然后if lastname为null,最后,firstname单独.

  • 在TSQL中将字符串连接到空字符串时,您将获得null.如果其中一个为null,则字符串常量在第一个参数中变为null. (5认同)
  • 实际上,你忘记了一个:COALESCE(LastName +','+ FirstName,LastName,FirstName,'这个可怜的吸盘没有名字')当然开玩笑吧. (2认同)