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

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.


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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.