还在学习SQL,如何防止FirstName
和LastName
之间结果集中的额外空间?
USE AdventureWorks;
GO
SELECT FirstName + ' ' + COALESCE (MiddleName, '') + ' ' + LastName
FROM Person.Contact;
答案 0 :(得分:3)
尝试:
USE AdventureWorks;
GO
SELECT FirstName + COALESCE (' ' +MiddleName, '') + ' ' + LastName
FROM Person.Contact;
如果MiddleName
为NULL ' '+MiddleName
变为NULL,则COALESCE返回空字符串,这会阻止额外的空间。
答案 1 :(得分:3)
空中间名加空格将导致null,因此:
FirstName + ' ' + COALESCE(MiddleName + ' ', '') + LastName
应该这样做。
答案 2 :(得分:3)
你可以
FirstName + ' ' + COALESCE (MiddleName + ' ', '') + LastName
如果MiddleName
是NULL
,那么MiddleName + anything
答案 3 :(得分:-1)
就个人而言,我会在COALESCE()
函数中附加空格。考虑另外处理空字符串:
SELECT FirstName + ' '
+ COALESCE(NULLIF(MiddleName, '') + ' ', '')
+ LastName
FROM Person.Contact;