使用此解决方案,我尝试使用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.
您不需要列出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)
您无需单独选择列以在CONCAT中使用它们.只需删除它们,您的查询将变为:
SELECT FirstName AS First_Name
, LastName AS Last_Name
, CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
Run Code Online (Sandbox Code Playgroud)