Vấn đề:
Bạn muốn nối các chuỗi từ hai cột của bảng thành một.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng tên là student
với dữ liệu trong các cột sau:id
, first_name
và last_name
.
id | first_name | last_name |
---|---|---|
1 | Lora | Smith |
2 | Emil | Màu nâu |
3 | Alex | Jackson |
4 | Martin | Davis |
Hãy nối họ với họ của học sinh thành một chuỗi. Sử dụng khoảng trắng giữa mỗi tên.
Giải pháp:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Truy vấn này trả về các bản ghi trong một cột có tên full_name
:
full_name |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martin Davis |
Thảo luận:
Để nối một chuỗi vào một chuỗi khác và trả về một kết quả, hãy sử dụng dấu || nhà điều hành. Điều này thêm hai chuỗi từ bên trái và bên phải với nhau và trả về một kết quả. Nếu bạn sử dụng tên của cột, đừng đặt nó trong dấu ngoặc kép. Tuy nhiên, khi sử dụng giá trị chuỗi dưới dạng khoảng trắng hoặc văn bản, hãy đặt nó trong dấu ngoặc kép.
Trong ví dụ của chúng tôi, chúng tôi đã thêm một khoảng trắng vào first_name
rồi đến cột last_name
. Cột mới này được gọi là full_name
.
Bạn cũng có thể sử dụng một chức năng đặc biệt:CONCAT. Nó có một danh sách các chuỗi hoặc tên của các cột để tham gia làm đối số:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Kết quả giống hệt nhau.
Tuy nhiên, hàm CONCAT () tốt hơn để lấy dữ liệu từ cột có giá trị NULL. Tại sao? Bởi vì, khi một NULL được bao gồm trong các giá trị được nối, toán tử trả về kết quả là NULL. Trong trường hợp CONCAT (), NULL sẽ không được hiển thị.
Nhìn vào kết quả của || nếu Emill không có họ được ghi:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
full_name |
---|
Lora Smith |
KHÔNG ĐỦ |
Alex Jackson |
Martin Davis |
Nhìn vào hàm CONCAT để biết cùng một dữ liệu:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
full_name |
---|
Lora Smith |
Emil |
Alex Jackson |
Martin Davis |