MySQL'de dize birleştirme


168

MySQL ve MySQL Workbench 5.2 CE kullanıyorum. 2 sütunu birleştirmeye çalıştığımda last_nameve first_nameçalışmıyor:

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

Yanıtlar:


291

MySQL, çoğu DBMS kullanımından +veya ||birleştirme için farklıdır . Şu CONCATişlevi kullanır :

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

@Eggyal'in yorumlarda belirttiği gibi ||, PIPES_AS_CONCATSQL modunu ayarlayarak MySQL'de operatörle dize birleştirmeyi etkinleştirebilirsiniz .


7
Daha iyi cevap, MySQL'in bitiştirme operatörlerini kullanmadığını açıklar.
DonBecker

29
Bu değil Dikkat tamamen MySQL: true yapar desteği ||ne zaman dize Ulama için PIPES_AS_CONCATSQL modu etkindir.
eggyal

1
Kullananlar Doctrineiçin, içindeki boşluk için tek tırnak CONCATve tüm sorgu etrafında çift tırnak kullanmak zorunda kaldım .
craned

3
Ayarlamak için PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Unset için: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Mariadb.com/kb/en/library/sql-mode/#examples
mivk

29

Deneyin:

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

ya da daha iyisi:

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

9

Kullanım concat () yerine işlev +böyle:

select concat(firstname, lastname) as "Name" from test.student

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.