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

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.


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

8

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.