Конкатенация строк в 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


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