代码之家  ›  专栏  ›  技术社区  ›  Glyn

如果存在以下情况,如何使用SQL CONCAT连接列并在列之间包含“&”

  •  0
  • Glyn  · 技术社区  · 5 年前

    我想连接列并放置一个“&”如果存在其他以下情况,例如:

    • 营地
    • 夏令营及;兽穴
    • 夏令营及;登和;徒步旅行
    • 夏令营及;登和;远足及;场外
    • 夏令营及;徒步旅行
    • 徒步旅行

    我的SQL是:

    SELECT cs_id, acc_id, cs_site, CONCAT(cs_suburb, ' ', cs_state, ' ', cs_postcode) AS city,  
           cs_first_contact_name, CONCAT(IF(cs_camp_site = 1, 'Camp', ''), ' ',  
           IF(cs_offsite_visit = 1, 'Off site visit', ''), ' ', IF(cs_scout_den = 1, 'Den', ''), ' ',  
           IF(cs_hike = 1, 'Hike', '')) AS type, cs_max_campers  
    FROM at_camp_site   
    ORDER BY cs_site;
    
    0 回复  |  直到 5 年前
        1
  •  3
  •   Nick SamSmith1986    5 年前

    你可以用 CONCAT_WS ,这将添加一个分隔符 只有 在任何非- NULL 值,因此为了避免额外的分隔符,为每个值设置默认值 无效的 而不是 '' :

    SELECT cs_id, 
           acc_id,
           cs_site,
           CONCAT(cs_suburb, ' ', cs_state, ' ', cs_postcode) AS city,  
           cs_first_contact_name, 
           CONCAT_WS(' & ',
                     IF(cs_camp_site = 1, 'Camp', NULL),
                     IF(cs_offsite_visit = 1, 'Off site visit', NULL),
                     IF(cs_scout_den = 1, 'Den', NULL),
                     IF(cs_hike = 1, 'Hike', NULL)) AS type, 
           cs_max_campers  
    FROM at_camp_site   
    ORDER BY cs_site;