这是我现在拥有的 SQL。名字和姓氏不应该丢失,因为它们在带有验证的界面上是必需的。但是,如果中间的首字母丢失,我不希望结果中有两个空格;我只想要一个空间。我可以放入一个 case 语句,但如果 SQL 已经有一个用于此目的的函数,这似乎有点过分了。有谁知道是否有用于此目的的功能?代码会是什么样子?

SELECT ISNULL(contact.firstname, '')
         + ' '
         + ISNULL(contact.middleinitial, '')
         + ' '
         + ISNULL(contact.lastname, '')
FROM dbo.contact

最佳答案

SELECT
 ISNULL(contact.firstname, '') +
 ISNULL(' ' + contact.middleinitial + ' ', ' ') +
 ISNULL(contact.lastname, '')

但是,您应该删除名字、姓氏的 ISNULL(定义为 NOT NULL?)或添加一些修剪
SELECT
 LTRIM(RTRIM(
   ISNULL(contact.firstname, '') +
    ISNULL(' ' + contact.middleinitial + ' ', ' ') +
    ISNULL(contact.lastname, '')
 ))

关于sql-server - 在 SQL Server 中使用连接的人名正确的空间量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6698454/

10-13 02:59