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
Какую базу данных вы используете? Какие типы двух столбцов?
Гордон Линофф



Используйте решение верхнего ответа, но добавьте трубку. выберите 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


5

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

select concat(concat(column1,' '), column2)

3

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

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

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


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

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



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.