将SQL SELECT的结果合并到字符串中

时间:2012-08-10 13:52:03

标签: sql sql-server-2008

比如说我们有下表:

Address Line 1 | Address Line 2 | Address Line 3 | Town | Region | Postcode

有没有办法从中选择所有行,然后将该行作为一个字符串返回,例如

AddressLine1 + AddressLine 2 + AddressLine 3 etc.....

如果这是一个基本问题,我很抱歉,这对SQL来说是非常新的

5 个答案:

答案 0 :(得分:2)

在oracle中我使用了||

Select AddressLine1 || ',' || AddressLine2 from address;

语法在不同的数据库服务器中会有所不同

答案 1 :(得分:2)

对于MS SQL,我将使用它:

SELECT    ([Address Line 1] + ', ' + [Address Line 2] + ', ' + [Address Line 3] + ', ' 
          + Town + ', ' + Region + ', ' + Postcode) AS Address
FROM      TableName

答案 2 :(得分:1)

对于MySQL,你应该使用CONCAT()函数,所以:

SELECT CONCAT( AddressLine1, ', ', AddressLine2, ', ', AddressLine3, ', ', Town, ', ', Region, ', ', Postcode ) AS LongAddress 
FROM ADDRESSES;

但如果您想避免在每个字段之间添加', ',则应使用CONCAT_WS()代替:

SELECT CONCAT_WS( ', ', AddressLine1, AddressLine2, AddressLine3, Town, Region, Postcode ) AS LongAddress 
FROM ADDRESSES;

答案 3 :(得分:1)

试试这个:(SQL Server)

不要忘记使用ISNULL()函数,如果它是null,则只将列转换为''。如果不这样做,如果任何列为空,则整行将为空

select isnull([Address Line 1],'')+' '+
       isnull([Address Line 2],'')+' '+
       isnull([Address Line 3],'')+' '+
       isnull(Town,'') +' '+ 
       isnull(Region,'') +' '+ 
       isnull(Postcode,'')
from <table>

答案 4 :(得分:0)

我实现了SQL-Server 2008标记,但就像FYI一样,SQL Server 2012实现了CONCAT功能,因此您可以执行类似CONCAT(AddressLine1,',',AddressLine2)之类的操作。好的一点是,这个函数将NULLS视为空字符串,因此“Joe G Joseph”担心在SQL 2012上不会存在:)