Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中连接和格式化文本_Sql_Sql Server - Fatal编程技术网

在SQL中连接和格式化文本

在SQL中连接和格式化文本,sql,sql-server,Sql,Sql Server,我需要将City、State和Country列连接成类似City、State和Country的内容 这是我的代码: Select City + ', ' + State + ', ' + Country as outputText from Places 但是,由于城市和州允许null或空值,因此发生的情况是,例如,如果城市为null/空,则我的输出将类似于,美国爱荷华州;或者说状态为空,那么输出将类似于美国西雅图 我是否可以格式化输出并删除不必要的逗号 编辑:由于要求,我不应该使用任何其他方

我需要将City、State和Country列连接成类似City、State和Country的内容

这是我的代码:

Select City + ', ' + State + ', ' + Country as outputText from Places
但是,由于城市和州允许null或空值,因此发生的情况是,例如,如果城市为null/空,则我的输出将类似于,美国爱荷华州;或者说状态为空,那么输出将类似于美国西雅图

我是否可以格式化输出并删除不必要的逗号

编辑:由于要求,我不应该使用任何其他方法,如PL/SQL、存储过程等,因此必须使用纯SQL语句来使用函数

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
SELECT COALESCE(City + ', ', '') + COALESCE(State + ', ', '')...
使用该函数

SELECT COALESCE(City + ', ', '') + COALESCE(State + ', ', '')...

由于添加带有null的字符串将导致null,所以如果它们为null而不是空字符串,这将为您提供所需的结果

Select isnull(City + ', ','')  + isnull(State + ', ' ,'') + isnull(Country,'') as outputText from Places

由于添加带有null的字符串将导致null,所以如果它们为null而不是空字符串,这将为您提供所需的结果

Select isnull(City + ', ','')  + isnull(State + ', ' ,'') + isnull(Country,'') as outputText from Places

一点也不优雅

如果为空,首先将城市、州、国家更改为空值 然后将该值解释为null,并在逗号前添加空格 然后用空集替换任何空格逗号空格。 查询:

SELECT replace(coalesce(Replace(City,'',Null),' ') + ', ' + 
               coalesce(Replace(State,'',Null), ' ' + ', ' + 
               coalesce(replace(Country,''Null),''), ' , ','') as outputText 
FROM Places

假设没有任何城邦或国家将包含空格逗号空格。

无论如何都不优雅

如果为空,首先将城市、州、国家更改为空值 然后将该值解释为null,并在逗号前添加空格 然后用空集替换任何空格逗号空格。 查询:

SELECT replace(coalesce(Replace(City,'',Null),' ') + ', ' + 
               coalesce(Replace(State,'',Null), ' ' + ', ' + 
               coalesce(replace(Country,''Null),''), ' , ','') as outputText 
FROM Places

假设没有任何城市州或国家将包含空格逗号空格。

在SQL Server 2012中,您可以使用CONCAT函数:

select concat(City,', ',State,', ',Country ) as outputText from Places

在SQL Server 2012中,您可以使用CONCAT函数:

select concat(City,', ',State,', ',Country ) as outputText from Places

你在使用什么数据库?SQL Server、MySQL等?@GoatCO SQL Server,请阅读我的编辑,我应该避免使用存储过程选择标记来描述您的问题…您使用的是什么数据库?SQL Server、MySQL等?@GoatCO SQL Server,请阅读我的编辑,我应该避免使用存储过程重新选择标记来描述您的问题…如果值为空而不是空,则无效。如果值为空而不是空,则无效。关闭!有一些语法和逻辑错误,但我已经编辑了您的查询以满足我的要求。如果您只有City,您将有类似City的内容,因此这将无法按描述工作。@C.J.lol,好吧,我很高兴能让您做到这一点。我是凭记忆写的,很高兴你能纠正任何错误。@reece我在问题中没有说得很清楚,但国家不能为空,正因为如此,paqogomez的代码实际上工作得很好。你应该添加COALESCE logic COALESCECity,!=然后“,”关上!有一些语法和逻辑错误,但我已经编辑了您的查询以满足我的要求。如果您只有City,您将有类似City的内容,因此这将无法按描述工作。@C.J.lol,好吧,我很高兴能让您做到这一点。我是凭记忆写的,很高兴你能纠正任何错误。@reece我在问题中没有说得很清楚,但国家不能为空,正因为如此,paqogomez的代码实际上工作得很好。你应该添加COALESCE logic COALESCECity,!=然后",",。