我希望将SQL server中的3列连接起来,如下所示:
MAX(LTRIM(RTRIM((ISNULL(LastName,'') +
', ' +
ISNULL(FirstName,'') +
', ' +
ISNULL(MiddleName,''))))) AS FullName我在SELECT子句中使用了此列的值:
MAX(FullName) AS FullName,我想处理空值,以防所有的三个姓,中间名和名字都是空的或空的。如果所有3列都为空或空,上述查询将显示“,”。但在这种情况下,我想展示"N/A“。
提前谢谢。
发布于 2016-10-27 09:41:20
您可以使用CASE表达式:
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
...发布于 2016-10-27 09:39:15
像下面这样使用Concat,这将执行隐式转换。所以不需要使用ISNULL。
select isnull(MAX(LTRIM(RTRIM((concat(LastName,
', ' ,
FirstName,
', ' ,
MiddleName,''))))) ,'n/a')AS FullName from table发布于 2016-10-27 09:43:19
使用COALESCE和CASE语句检查
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 FullNamehttps://stackoverflow.com/questions/40281124
复制相似问题