簡體   English   中英

MySQL SELECT條件CONCAT

[英]MySQL SELECT Conditional 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

因此,如果填充了地址1,則需要與地址1串聯的門牌號。 如果不是,則與地址2或地址3連接。 然后按照示例跟隨地址的其余部分。

我嘗試使用IF和CASE語句,但是似乎無法到達我想要的輸出附近。

希望有道理。

您可以通過添加一些concat操作來做到這一點。

檢查以下代碼,它應該可以工作。

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

使用concat_ws() (與分隔符串聯)以及nullif()

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

嘗試如下

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

這個怎么樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM