在表格中,有3列:GivenName, FamilyName, MiddleName
。我必须附加所有三列值来输出像这样的单个列
Select Upper(GivenName) + FamilyName + Upper(MiddleName) as PersonName.....
但是如果列中任何一列的值为null,则整个输出为Null。
如果我可以在追加之前检查是否有任何列为空?这样它就不会被追加,而其他非空的则会被追加。
但我不能使用'其中GivenName不为null,FamilyName不为null'条件。
我只是想要追加null的字符串。 对于Ex:
If GivenName = 'Mark',
FamilyName = 'Joseph',
MiddleName is null
然后输出应该是:MARK Joseph而不是NULL,它没有附加MiddleName,因为它是Null。
(但在SQL中输出为NULL。试试这个..
declare @FirstName nvarchar(20);
declare @GivenName nvarchar(20);
declare @MiddleName nvarchar(20);
set @FirstName = 'Steve';
set @GivenName = 'Hudson';
set @MiddleName = null;
select Upper(@FirstName) + @GivenName + UPPER(@MiddleName)
=>输出空
)
答案 0 :(得分:2)
这样做:
Select COALESCE(Upper(GivenName), '') + COALESCE(FamilyName, ' ') + COALESCE(Upper
(MiddleName), '') as PersonName
COALESCE将对第一个参数进行空检查。如果为null,则返回第二个参数
答案 1 :(得分:1)
如果列为null,您可以使用isnull
函数简单地输出空字符串:
Select Upper(isnull(GivenName, '')) + isnull(FamilyName,'') + Upper(isnull(MiddleName,'')) as PersonName
我不完全确定你应该在数据库中这样做......这对我来说似乎是一个表示层。
答案 2 :(得分:0)
在连接中执行此类操作的方法是
SELECT ISNULL(FirstName + ' ', '')
+ ISNULL(MiddleName + ' ', '')
+ ISNULL(LastName, '')
显然你可以在适当的时候使用UPPER和LOWER功能。
答案 3 :(得分:0)
可能喜欢这个
SELECT CONCAT(ISNULL(FirstName, ''),ISNULL(MiddleName, ''),ISNULL(LastName, ''))
AS FullName FROM testtable