比如说我们有下表:
Address Line 1 | Address Line 2 | Address Line 3 | Town | Region | Postcode
有没有办法从中选择所有行,然后将该行作为一个字符串返回,例如
AddressLine1 + AddressLine 2 + AddressLine 3 etc.....
如果这是一个基本问题,我很抱歉,这对SQL来说是非常新的
答案 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上不会存在:)