MySQL选择为将两列合并为一列
使用,我尝试使用COALESCE作为MySQL查询的一部分,该查询在导出数据时使用SELECT as来命名列名,并输出到csv文件MySQL选择为将两列合并为一列,mysql,sql,Mysql,Sql,使用,我尝试使用COALESCE作为MySQL查询的一部分,该查询在导出数据时使用SELECT as来命名列名,并输出到csv文件 SELECT FirstName AS First_Name , LastName AS Last_Name , ContactPhoneAreaCode1 , ContactPhoneNumber1 , COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Conta
SELECT FirstName AS First_Name
, LastName AS Last_Name
, ContactPhoneAreaCode1
, ContactPhoneNumber1
, COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
我想要3栏:名字、姓氏和联系电话
我得到5列:名字、姓氏、ContactPhoneAreaCode1、ContactPhoneNumber 1和ContactPhone
如何从查询中将ContactPhoneAreaCode1、ContactPhoneNumber1合并到Contact\u Phone的单个列中?您无需单独选择这些列,即可在CONCAT中使用它们。只需删除它们,您的查询就会变成:
SELECT FirstName AS First_Name
, LastName AS Last_Name
, CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
如果两列都可以包含
NULL
,但您仍然希望将它们合并为单个字符串,最简单的解决方案是使用:
这样,您就不必分别检查每个列的NULL
-ness
或者,如果两个列实际上都定义为非空
,则就足够了:
SELECT FirstName AS First_Name
, LastName AS Last_Name
, CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
至于
COALESCE
,它有点不同:给定参数列表,它返回第一个非NULL
您不需要列出ContactPhoneAreaCode1和ContactPhoneNumber1
SELECT FirstName AS First_Name,
LastName AS Last_Name,
COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone
FROM TABLE1
在
NULL
列的情况下,最好使用这样的IF
子句,它结合了两个函数:CONCAT
和COALESCE
,并在列之间使用特殊字符,如空格或“\
SELECT FirstName , LastName ,
IF(FirstName IS NULL AND LastName IS NULL, NULL,' _ ',CONCAT(COALESCE(FirstName ,''), COALESCE(LastName ,'')))
AS Contact_Phone FROM TABLE1
我认为您需要concat只需将不希望看到的列保留在查询之外。
COALESCE
返回第一个非空字段。因此,如果ContactPhoneAreaCode1不为空,则ContactPhone将等于ContactPhoneAreaCode1。您想使用函数CONCAT
如何在CONCAT\u WS中插入空格?通过添加“
不起作用。在终端中工作正常,请检查查询如何传递到MySQL服务器以及结果如何处理。啊,是的。谢谢我没有在开始时设置空格'
,而是在列之间:-P
SELECT FirstName , LastName ,
IF(FirstName IS NULL AND LastName IS NULL, NULL,' _ ',CONCAT(COALESCE(FirstName ,''), COALESCE(LastName ,'')))
AS Contact_Phone FROM TABLE1