MySQL SELECT AS将两列合二为一

Roc*_*aco 63 mysql sql

使用此解决方案,我尝试使用COALESCE作为MySQL查询的一部分,使用SELECT As输出到csv文件,以便在导出数据时命名列名.

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , ContactPhoneAreaCode1
     , ContactPhoneNumber1
     , COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1
Run Code Online (Sandbox Code Playgroud)

我想要3列:First_Name,Last_Name和Contact_Phone

我得到5列:First_Name,Last_Name,ContactPhoneAreaCode1,ContactPhoneNumber1和Contact_Phone

如何从查询中隐藏ContactPhoneAreaCode1,ContactPhoneNumber1合并到Contact_Phone的单个列?

rai*_*7ow 128

如果两列都可以包含NULL,但您仍希望将它们合并为单个字符串,则最简单的解决方案是使用CONCAT_WS():

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT_WS('', ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1
Run Code Online (Sandbox Code Playgroud)

这样您就不必NULL单独检查每列的 - .

或者,如果两列实际定义为NOT NULL,则CONCAT()就足够了:

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1
Run Code Online (Sandbox Code Playgroud)

至于COALESCE,它是一个有点不同的野兽:给定参数列表,它返回第一个不是NULL.


sun*_*ung 6

您不需要列出ContactPhoneAreaCode1和ContactPhoneNumber1

SELECT FirstName AS First_Name, 
LastName AS Last_Name, 
COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
FROM TABLE1
Run Code Online (Sandbox Code Playgroud)


Gam*_*osh 5

您无需单独选择列以在CONCAT中使用它们.只需删除它们,您的查询将变为:

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1
Run Code Online (Sandbox Code Playgroud)

  • 我想你想要CONCAT (2认同)