たとえば、次の表があるとします。
Address Line 1 | Address Line 2 | Address Line 3 | Town | Region | Postcode
これからすべての行を選択し、その行を1つの文字列として返す方法はありますか?
AddressLine1 + AddressLine 2 + AddressLine 3 etc.....
これがSQLにとって非常に新しい基本的な質問である場合は、お詫び申し上げます。
たとえば、次の表があるとします。
Address Line 1 | Address Line 2 | Address Line 3 | Town | Region | Postcode
これからすべての行を選択し、その行を1つの文字列として返す方法はありますか?
AddressLine1 + AddressLine 2 + AddressLine 3 etc.....
これがSQLにとって非常に新しい基本的な質問である場合は、お詫び申し上げます。
オラクルでは||を使用しました
Select AddressLine1 || ',' || AddressLine2 from address;
構文はデータベースサーバーごとに異なります
MS SQLの場合、これは私が使用するものです。
SELECT ([Address Line 1] + ', ' + [Address Line 2] + ', ' + [Address Line 3] + ', '
+ Town + ', ' + Region + ', ' + Postcode) AS Address
FROM TableName
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;
これを試してください:(SQL Server)
ISNULL()関数を使用することを忘れないでください。この関数は、列がnullの場合に列を''に変換するだけです。そうしないと、いずれかの列がnullの場合、行全体が空白になります。
select isnull([Address Line 1],'')+' '+
isnull([Address Line 2],'')+' '+
isnull([Address Line 3],'')+' '+
isnull(Town,'') +' '+
isnull(Region,'') +' '+
isnull(Postcode,'')
from <table>
SQL-Server 2008タグを実現しましたが、参考までに、SQL Server 2012はCONCAT関数を実装しているため、CONCAT(AddressLine1、'、'、AddressLine2)などを実行できます。そして、この関数はNULLを空の文字列として扱うので、「JoeGJoseph」の心配はSQL2012には存在しません:)