首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连用逗号连接名、姓和中间名

问连用逗号连接名、姓和中间名
EN

Stack Overflow用户
提问于 2016-10-27 09:36:41
回答 5查看 4.3K关注 0票数 0

我希望将SQL server中的3列连接起来,如下所示:

代码语言:javascript
复制
MAX(LTRIM(RTRIM((ISNULL(LastName,'') + 
    ', ' + 
    ISNULL(FirstName,'') + 
    ', ' + 
    ISNULL(MiddleName,''))))) AS FullName

我在SELECT子句中使用了此列的值:

代码语言:javascript
复制
MAX(FullName) AS FullName,

我想处理空值,以防所有的三个姓,中间名和名字都是空的或空的。如果所有3列都为空或空,上述查询将显示“,”。但在这种情况下,我想展示"N/A“。

提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-10-27 09:41:20

您可以使用CASE表达式:

代码语言:javascript
复制
SELECT MAX(CASE WHEN ISNULL(FirstName, '') = '' AND
                     ISNULL(MiddleName, '') = '' AND
                     ISNULL(LastName, '') = ''
                THEN 'N/A'
                ELSE LTRIM(RTRIM((ISNULL(LastName,'') +  ', ' +
                                  ISNULL(FirstName,'') + ', ' +
                                  ISNULL(MiddleName,''))))
           END) AS FullName
FROM yourTable
...
票数 1
EN

Stack Overflow用户

发布于 2016-10-27 09:39:15

像下面这样使用Concat,这将执行隐式转换。所以不需要使用ISNULL。

代码语言:javascript
复制
select isnull(MAX(LTRIM(RTRIM((concat(LastName, 
    ', ' ,
    FirstName, 
    ', ' ,
    MiddleName,''))))) ,'n/a')AS FullName from table
票数 0
EN

Stack Overflow用户

发布于 2016-10-27 09:43:19

使用COALESCE和CASE语句检查

代码语言:javascript
复制
Declare @FirstName VARCHAR(50)='',@MiddleName VARCHAR(50),@LastName VARCHAR(50)

SELECT 
CASE WHEN ISNULL(COALESCE(@FirstName,@MiddleName,@LastName),'')<>'' 
THEN ISNULL(@FirstName,'')+',' +ISNULL(@MiddleName,'')+','+ISNULL(@LastName,'')
ELSE 'N/A' END AS FullName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40281124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档