Конкатенация строк в 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 ваши вопросы, прежде чем задавать их здесь.
Матиас Ликкегор Лоренцен
5
Меня не волнуют никакие исследования, лол. StackOverflow становится моим главным хитом в Google для этого типа вопроса, и это место для ответов краудсорсинга :)
Хэмиш

Ответы:

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
ADW
источник
8

Используйте функцию concat () вместо +этого:

select concat(firstname, lastname) as "Name" from test.student
Гарри Джой
источник