Rangkaian string dalam MySQL

149

Saya menggunakan MySQL dan MySQL Workbench 5.2 CE. Ketika saya mencoba menggabungkan 2 kolom, last_namedan first_name, itu tidak berhasil:

select first_name + last_name as "Name" from test.student
Roshan
sumber
21
Pertanyaan-pertanyaan ini sama sekali tidak menunjukkan upaya penelitian. Lain kali, Google pertanyaan Anda sebelum Anda bertanya di sini.
Mathias Lykkegaard Lorenzen
5
Saya tidak peduli tentang upaya penelitian, lol. stackoverflow menjadi hit teratas saya di google untuk jenis pertanyaan ini, dan ini adalah tempat untuk jawaban crowdsourced :)
hamish

Jawaban:

271

MySQL berbeda dari sebagian besar penggunaan DBMS +atau ||untuk penggabungan. Ini menggunakan CONCATfungsi:

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

Seperti yang ditunjukkan @eggyal dalam komentar, Anda dapat mengaktifkan penggabungan string dengan ||operator di MySQL dengan mengatur PIPES_AS_CONCATmode SQL.

Eugene Yarmash
sumber
7
Jawaban yang lebih baik, menjelaskan bahwa MySQL tidak menggunakan operator gabungan.
DonBecker
28
Hati-hati ini tidak sepenuhnya benar: MySQL tidak mendukung ||untuk string Rangkaian, ketika PIPES_AS_CONCATmodus SQL diaktifkan.
eggyal
1
Bagi yang menggunakan Doctrine, saya harus menggunakan tanda kutip tunggal untuk ruang dalam CONCAT, dan tanda kutip ganda di seluruh kueri.
derek
3
Untuk mengatur PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Unset: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Contoh lainnya di mariadb.com/kb/en/library/sql-mode/#examples
mivk
27

Mencoba:

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

atau lebih baik:

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

Gunakan fungsi concat () alih-alih +seperti ini:

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