З'єднання рядків у MySQL


149

Я використовую MySQL та MySQL Workbench 5.2 CE. Коли я намагаюся об'єднати 2 стовпчики, last_nameі first_nameце не працює:

select first_name + last_name as "Name" from test.student

21
Ці питання не показують абсолютно ніяких зусиль для дослідження. Наступного разу Google запитає ваші запитання, перш ніж їх задавати тут.
Mathias Lykkegaard Lorenzen

5
Мене не хвилює жодних дослідницьких зусиль, хаха. stackoverflow стає моїм найкращим хітом у Google для такого типу питань, і це місце для переповнених відповідей :)
hamish

Відповіді:


271

MySQL відрізняється від використання більшості СУБД +або ||для об'єднання. Він використовує CONCATфункцію:

SELECT CONCAT(first_name, " ", last_name) AS Name FROM test.student

Як @eggyal вказував у коментарях, ви можете включити конкатенацію рядків з ||оператором в MySQL, встановивши PIPES_AS_CONCATрежим SQL.


7
Краще відповідь, пояснюється, що MySQL не використовує операторів з’єднання.
DonBecker

28
Обережно , це не зовсім вірно: MySQL робить підтримку ||для конкатенації, коли PIPES_AS_CONCATрежим SQL включений.
eggyal

1
Для тих, хто використовує Doctrine, мені довелося використовувати одиничні лапки для місця в CONCATі подвійні лапки навколо всього запиту.
викрадено

3
Для того, щоб встановити PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Для скасування установки: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Більше прикладів на mariadb.com/kb/en/library/sql-mode/#examples
mivk

27

Спробуйте:

select concat(first_name,last_name) as "Name" from test.student

або, ще краще:

select concat(first_name," ",last_name) as "Name" from test.student


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.