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

106

Я пытаюсь найти способ объединить два столбца в один, но продолжаю получать значение «0» в столбце вместо комбинации слов.

Вот что я пробовал так же, как и другие:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

Может ли кто-нибудь сообщить мне, что я делаю не так?

ааб
источник
1
Какую базу данных вы используете? Какие типы двух столбцов?
Гордон Линофф
возможный дубликат объединения двух столбцов базы данных в один столбец
набора результатов
Проверьте это: stackoverflow.com/questions/6427764/…
Чоудхури Саадмаан Махмид
Используйте решение верхнего ответа, но добавьте трубку. выберите concat (column1, '|', column2). Позже это помогает в превосходстве
Cosmic Hawk

Ответы:

167

Я предполагаю, что вы используете MySQL, где +оператор выполняет сложение вместе с тихим преобразованием значений в числа. Если значение не начинается с цифры, то преобразованное значение равно 0.

Так что попробуйте это:

select concat(column1, column2)

Два способа добавить пробел:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
Гордон Линофф
источник
я использую, sql server 2005и это дает мне ошибку какIncorrect syntax near ')'.
hud
5
@coder. . . Этот вопрос помечен как "mysql". Если у вас есть вопрос по SQL Server, задавайте его как вопрос, а не в комментарии.
Гордон Линофф
Также работает для T-SQL, отличное и простое решение. Уменьшает два столбца в один.
Райан Баттистон
23

Попробуй, у меня это работает

select (column1 || ' '|| column2) from table;
Оренива Бабатунде
источник
1
Это похоже на Oracle.
Coburne
Это сработало и для объединения нескольких (более 2) столбцов. Thx
Kayathiri
Стандарт SQL предоставляет функцию CONCAT () для объединения двух строк в одну. Однако SQLite не поддерживает функцию CONCAT (). Вместо этого он использует оператор конкатенации (||) для объединения двух строк в одну.
PaulH
14

Это работа для меня

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
sk juli kaka
источник
5

Это единственное решение, которое сработает для меня, когда мне потребуется пространство между объединяемыми столбцами.

select concat(concat(column1,' '), column2)
Mattk
источник
3

Поклонникам MySQL понравится эта IFNULL()функция. Другие ответы здесь предполагают аналогичную функциональность с ISNULL()функцией в некоторых реализациях. В моей ситуации у меня есть столбец описаний, который есть NOT NULL, и столбец серийных номеров, которые могут быть. NULLВот как я объединил их в один столбец:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;

Мои результаты показывают, что результаты конкатенации строки с NULLрезультатами в файле NULL. В этих случаях я получал альтернативную ценность.

2Нинер, Ромео
источник
3

Если вы работаете, то Oracle:

SELECT column1 || column2 AS column3
FROM table;

ИЛИ

Если вы работаете с MySql, то:

SELECT Concat(column1 ,column2) AS column3
FROM table;
Баладжи Донгаре
источник
1

Я использовал этот способ, и он всегда был лучшим. В этом коде также обрабатывается null

SELECT Title,
FirstName,
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer

Попробуй это...

Сунил Ачарья
источник
0
convert(varchar, column_name1) + (varchar, column_name)
Ритеш Ядав
источник
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Рэвин
источник
Простой способ комбинировать
Рэвин