当前位置:  开发笔记 > 编程语言 > 正文

什么是连接可能包含空值的人名的最短TSQL

如何解决《什么是连接可能包含空值的人名的最短TSQL》经验,为你挑选了2个好方法。

3个字段:FirstName,MiddleName,LastName

任何字段都可以为null,但我不想要额外的空格.格式应为"First Middle Last","First Last","Last"等.



1> Andrew Rolli..:
    LTRIM(RTRIM(
    LTRIM(RTRIM(ISNULL(FirstName, ''))) + ' ' + 
    LTRIM(RTRIM(ISNULL(MiddleName, ''))) + ' ' + 
    LTRIM(ISNULL(LastName, ''))
    ))

注意:这不会留下尾随或前导空格.这就是为什么它比其他解决方案有点丑陋.



2> Mark Bracket..:

假设"额外空格",你的意思是在连接期间插入额外的空格(这是一个合理的假设,我认为.如果你的数据中有额外的空格,你应该清理它):

ISNULL(FirstName + ' ', '')  + ISNULL(MiddleName + ' ', '') + ISNULL(LastName, '')

因为你将为名称添加一个空格 - 如果它是NULL,则产生NULL - 产生空字符串.

编辑:如果您不计算SET OPTION - 可以是连接或db选项:

SET CONCAT_NULL_YIELDS_NULL OFF
LTRIM(FirstName + ' ' + NULLIF(MiddleName + ' ', ' ') + LastName)

有点短,但有点丑陋.

编辑2:既然你接受了UDF的答案 - 国际海事组织,这有点作弊 - 这里有一些相同的情况:

SELECT a FROM b

b是一个视图.;) 要么.存储过程,

EXEC c

但是,由于EXEC是可选的:

c

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有