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 (колонка1, '|', стовпець2). Це допомагає в чудовому пізніше
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результатами в a 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.