Konkatenacja ciągów znaków w MySQL

149

Używam MySQL i MySQL Workbench 5.2 CE. Kiedy próbuję połączyć 2 kolumny last_namei first_nameto nie działa:

select first_name + last_name as "Name" from test.student
Roshan
źródło
21
To pytanie nie wykazuje żadnego wysiłku badawczego. Następnym razem wygoogluj swoje pytania, zanim zadasz je tutaj.
Mathias Lykkegaard Lorenzen
5
Nie obchodzą mnie żadne badania, lol. stackoverflow staje się moim topowym hitem w Google dla tego typu pytań, a to jest miejsce na odpowiedzi crowdsourcingowe :)
hamish

Odpowiedzi:

271

MySQL różni się od większości DBMS używających +lub ||do konkatenacji. Wykorzystuje CONCATfunkcję:

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

Jak @eggyal wskazał w komentarzach, można włączyć konkatenację ciągów z ||operatorem w MySQL, ustawiając PIPES_AS_CONCATtryb SQL.

Eugene Yarmash
źródło
7
Lepsza odpowiedź wyjaśnia, że ​​MySQL nie używa operatorów konkatenacji.
DonBecker
28
Strzeż to nie jest całkowicie prawdziwe: MySQL ma wsparcia ||dla łańcuchów znaków, gdy PIPES_AS_CONCATwłączony jest tryb SQL.
eggyal
1
W przypadku osób korzystających Doctrinemusiałem użyć pojedynczych cudzysłowów dla spacji CONCATi podwójnych cudzysłowów wokół całego zapytania.
wyciągnięto
3
Aby ustawić PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Aby rozbroić: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Więcej przykładów na mariadb.com/kb/en/library/sql-mode/#examples
mivk
27

Próbować:

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

albo lepiej:

select concat(first_name," ",last_name) as "Name" from test.student
ADW
źródło
8

Użyj funkcji concat () zamiast +tego:

select concat(firstname, lastname) as "Name" from test.student
Harry Joy
źródło