1

例如,我们有下表:

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

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

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

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

4

5 回答 5

2

在 oracle 中我使用了 ||

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

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

于 2012-08-10T13:55:48.173 回答
2

对于 MS SQL,这是我将使用的:

SELECT    ([Address Line 1] + ', ' + [Address Line 2] + ', ' + [Address Line 3] + ', ' 
          + Town + ', ' + Region + ', ' + Postcode) AS Address
FROM      TableName
于 2012-08-10T13:55:56.630 回答
1

试试这个:(SQL Server)

请不要忘记使用 ISNULL()函数,如果它为空,它只会将列转换为 ''。如果您不这样做,如果任何一列为空,您的整行都将为空。

select isnull([Address Line 1],'')+' '+
       isnull([Address Line 2],'')+' '+
       isnull([Address Line 3],'')+' '+
       isnull(Town,'') +' '+ 
       isnull(Region,'') +' '+ 
       isnull(Postcode,'')
from <table>
于 2012-08-10T14:15:29.173 回答
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;
于 2012-08-10T14:03:07.687 回答
0

我实现了 SQL-Server 2008 标记,但仅供参考,SQL Server 2012 实现了 CONCAT 函数,因此您可以执行诸如 CONCAT (AddressLine1, ',' , AddressLine2) 之类的操作。一件好事是,该函数将 NULLS 视为空字符串,因此 SQL 2012 上不再存在“Joe G Joseph”担忧 :)

于 2012-08-10T14:22:14.953 回答