2017-10-05 11 views
1

は、私は基本的にアドレスMySQLのSELECT条件CONCAT

を保持するデータベースを持っているテーブル(tblAddress)は次のようになります

...私はなりたい郵便番号に基づいてデータベースを検索

housename | housenumber | address1 | address2  | address3 | town  | postcode 
Banana House |   29 | Acacia Road | Yellow Skin Way |   | Nuttytown | W1 1MP 

このような結果を返すことができます...

Banana House,29 Acacia Road,Yellow Skin Way,Nuttytown,W1 1MP 

私はaddress1と連結されたhousenumberが必要です。IF address1が入力されています。そうでない場合は、address2またはaddress3と連動します。その後、例のようにアドレスの残りの部分に従います。

私はIFとCASE文を使ってみましたが、私が後に出ている出力のどこにも出てこないようです。

希望は意味があります。

答えて

2

、以下のように試してみてくださいと一緒に使用concat_ws()(セパレータと連結)。

以下のコードを確認してください。

このことについてどのように
SELECT CONCAT(housename, CONCAT(" ",CONCAT(housenumber, CONCAT(" ",CONCAT_WS(' ,', 
        NULLIF(address1, ''), 
        NULLIF(address2, ''), 
        NULLIF(address3, ''), 
        NULLIF(town, ''), 
        NULLIF(postcode, '')))))) AS concatedAddress FROM tblAddress; 
+0

私は最高の答えを待っているわけではありません、私は彼らが来るようにテストしており、彼らは速く来ています。私はテストが終わったらすぐに対応し、正しいものを確認することができます。 – user3411176

+0

これをテストし、動作することを確認できました。 housenameの後にカンマを追加するにはちょっとした変更が必要です。私のためにこれを解決するためにあなたの時間をありがとう。非常に高く評価。 – user3411176

+0

ようこそ@ user3411176コーディングを保つ:) –

0

nullif()

SELECT CONCAT_WS(',', NULLIF(housename, ''), 
         NULLIF(housenumber, ''), 
         NULLIF(address1, ''), 
         NULLIF(address2, ''), 
         NULLIF(address3, ''), 
         NULLIF(town, ''), 
         NULLIF(postcode, '') 
     ) AS address FROM tblAddress 
+0

...' 'バナナハウス、29アカシアの道を求めtopicstarter ...' –

+0

申し訳ありませんが、私はその点を逃した、Amruth LSは正解を持っています – MrCarrot

0

あなたは、いくつかの連結操作を追加することによってそれを行うことができます

SELECT CONCAT_WS (", ", 
    housename, 
    CONCAT(housenumber, CONCAT_WS (", ", NULLIF(address1, ''), NULLIF(address2, ''), NULLIF(address3, ''))), 
    town, 
    postcode) AS address 
FROM tblAddress 
0

: `バナナハウス、29、アカシアの道になります

SELECT 
     housename 
     ,CONCAT(housenumber, CONCAT(' ', COALESCE(address1, '')), CONCAT(' ', COALESCE(address2, '')), CONCAT(' ', COALESCE(address3, ''))) AS address 
     ,town 
     ,postcode 
FROM tblAddress;