我需要将City
,State
和Country
列连接成City,State,Country。
这是我的代码:
Select City + ', ' + State + ', ' + Country as outputText from Places
但是,因为City
和State
允许null
(或空)值,所以会发生什么,(例如)如果City
为空/空,我的输出看起来像, Iowa, USA
;或者说State
为空,然后输出看起来像Seattle, , USA
无论如何我可以格式化输出并删除“不必要的”逗号吗?
编辑:由于要求,我不应该使用任何其他的意思(如PL / SQL,存储过程)等,所以它必须是普通的SQL语句
答案 0 :(得分:3)
select
isnull(City, '') +
case when isnull(City, '') != '' then ', ' else '' end +
isnull(State, '') +
case when isnull(State, '') != '' then ', ' else '' end +
isnull(Country, '') as outputText
from
Places
答案 1 :(得分:1)
由于添加一个带有null的字符串将导致null,因此如果它们为null(不是空字符串),这将为您提供所需的结果
Select isnull(City + ', ','') + isnull(State + ', ' ,'') + isnull(Country,'') as outputText from Places
答案 2 :(得分:0)
SELECT COALESCE(City + ', ', '') + COALESCE(State + ', ', '')...
答案 3 :(得分:0)
无论如何都不优雅......
查询:
SELECT replace(coalesce(Replace(City,'',Null),' ') + ', ' +
coalesce(Replace(State,'',Null), ' ' + ', ' +
coalesce(replace(Country,''Null),''), ' , ','') as outputText
FROM Places
假设没有城市州或国家/地区包含空格逗号空间。
答案 4 :(得分:0)
在SQL Server 2012中,您可以使用CONCAT功能:
select concat(City,', ',State,', ',Country ) as outputText from Places