Nối chuỗi trong MySQL


148

Tôi đang sử dụng MySQL và MySQL Workbench 5.2 CE. Khi tôi cố nối 2 cột last_namefirst_namenó không hoạt động:

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

21
Câu hỏi này cho thấy hoàn toàn không có nỗ lực nghiên cứu. Lần tới, Google câu hỏi của bạn trước khi bạn hỏi họ ở đây.
Mathias Lykkegaard Lorenzen

4
Tôi không quan tâm đến việc không có nỗ lực nghiên cứu, lol. stackoverflow trở thành điểm nhấn hàng đầu của tôi trong google cho loại câu hỏi này và đây là nơi dành cho các câu trả lời được cộng đồng :)
hamish

Câu trả lời:


270

MySQL khác với hầu hết các DBMS sử dụng +hoặc ||để ghép nối. Nó sử dụng CONCATchức năng:

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

Như @eggyal đã chỉ ra trong các bình luận, bạn có thể kích hoạt nối chuỗi với ||toán tử trong MySQL bằng cách đặt PIPES_AS_CONCATchế độ SQL.


7
Câu trả lời tốt hơn, giải thích rằng MySQL không sử dụng toán tử ghép.
DonBecker

28
Coi chừng điều này không hoàn toàn đúng: MySQL không hỗ trợ ||nối chuỗi, khi PIPES_AS_CONCATchế độ SQL được bật.
eggyal

1
Đối với những người sử dụng Doctrine, tôi đã phải sử dụng dấu ngoặc đơn cho khoảng trắng trong CONCATvà dấu ngoặc kép xung quanh toàn bộ truy vấn.
vươn

3
Để đặt PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Để bỏ đặt : SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Ví dụ khác tại mariadb.com/kb/en/l Library / sql
mode / # examples

27

Thử:

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

hoặc tốt hơn:

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


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.