![](/img/trans.png)
[英]How to have a conditional SEPARATOR in a GROUP_CONCAT MySQL select
[英]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.