Подтвердить что ты не робот

MySQL SELECT AS объединяет два столбца в один

Используя это решение, я попытался использовать COALESCE как часть MySQL-запроса, который выводит в файл csv с помощью SELECT As, чтобы назвать имена столбцов при экспорте данных.

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , ContactPhoneAreaCode1
     , ContactPhoneNumber1
     , COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Мне нужны 3 столбца: First_Name, Last_Name и Contact_Phone

Я получаю 5 столбцов: First_Name, Last_Name, ContactPhoneAreaCode1, ContactPhoneNumber1 и Contact_Phone

Как скрыть объединение ContactPhoneAreaCode1, ContactPhoneNumber1 в один столбец для Contact_Phone из запроса?

4b9b3361

Ответ 1

Если оба столбца могут содержать NULL, но вы все же хотите объединить их в одну строку, самым простым решением будет использование CONCAT_WS ( ):

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT_WS('', ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Таким образом вам не придется проверять наличие NULL -ness каждого столбца отдельно.

В качестве альтернативы, если оба столбца фактически определены как NOT NULL, CONCAT() будет достаточно:

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Что касается COALESCE, это немного другое зверь: учитывая список аргументов, он возвращает первое, а не NULL.

Ответ 2

Вам не нужно выбирать столбцы отдельно, чтобы использовать их в своем CONCAT. Просто удалите их, и ваш запрос станет следующим:

SELECT FirstName AS First_Name
     , LastName AS Last_Name
     , CONCAT(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
  FROM TABLE1

Ответ 3

Вам не нужно указывать ContactPhoneAreaCode1 и ContactPhoneNumber1

SELECT FirstName AS First_Name, 
LastName AS Last_Name, 
COALESCE(ContactPhoneAreaCode1, ContactPhoneNumber1) AS Contact_Phone 
FROM TABLE1

Ответ 4

В случае столбцов 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