MySQL kết hợp hai cột thành một cột


106

Tôi đang cố gắng tìm cách kết hợp hai cột thành một, nhưng tiếp tục nhận giá trị '0' trong cột thay vì kết hợp các từ.

Đây là những gì tôi đã thử cũng như những người khác:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

Ai đó có thể vui lòng cho tôi biết tôi đang làm gì sai không?


1
Bạn đang dùng gói dữ liệu nào vậy? Các loại của hai cột là gì?
Gordon Linoff,



Sử dụng giải pháp của câu trả lời hàng đầu nhưng thêm một đường ống. chọn concat (column1, '|', column2). Nó giúp trong excel sau
Vũ trụ Hawk

Câu trả lời:


167

Tôi đoán là bạn đang sử dụng MySQL trong đó +toán tử bổ sung, cùng với chuyển đổi im lặng các giá trị thành số. Nếu một giá trị không bắt đầu bằng một chữ số, thì giá trị được chuyển đổi là 0.

Vì vậy, hãy thử điều này:

select concat(column1, column2)

Hai cách để thêm khoảng trắng:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)

tôi đang sử dụng sql server 2005và nó đang báo lỗi cho tôi làIncorrect syntax near ')'.
hud

5
@coder. . . Câu hỏi này được gắn thẻ "mysql". Nếu bạn có câu hỏi về SQL Server, hãy đặt câu hỏi đó dưới dạng câu hỏi, không phải trong nhận xét.
Gordon Linoff

Cũng hoạt động cho T-SQL, giải pháp tuyệt vời và đơn giản. Giảm hai cột thành một.
Ryan Battistone

23

Hãy thử cái này, nó phù hợp với tôi

select (column1 || ' '|| column2) from table;

1
Điều này trông giống như Oracle.
coburne

Điều này cũng hoạt động để kết hợp nhiều (hơn 2) cột. Thx
Kayathiri

Chuẩn SQL cung cấp hàm CONCAT () để nối hai chuỗi thành một chuỗi duy nhất. SQLite, tuy nhiên, không hỗ trợ hàm CONCAT (). Thay vào đó, nó sử dụng toán tử nối (||) để nối hai chuỗi thành một.
PaulH

14

Nó làm việc cho tôi

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;

5

Đây là giải pháp duy nhất phù hợp với tôi, khi tôi yêu cầu một khoảng trống ở giữa các cột được hợp nhất.

select concat(concat(column1,' '), column2)

3

Đối với những người hâm mộ MySQL ngoài kia, tôi thích IFNULL()chức năng này. Các câu trả lời khác ở đây đề xuất chức năng tương tự với ISNULL()chức năng trong một số triển khai. Trong tình huống của tôi, tôi có một cột mô tả NOT NULLvà một cột số sê-ri. NULLĐây là cách tôi kết hợp chúng thành một cột:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;

Kết quả của tôi gợi ý rằng kết quả của việc nối một chuỗi với NULLkết quả là a NULL. Tôi đã nhận được giá trị thay thế trong những trường hợp đó.


3

Nếu bạn đang tiếp tục Oraclethì:

SELECT column1 || column2 AS column3
FROM table;

HOẶC LÀ

Nếu bạn đang làm việc trên MySql thì:

SELECT Concat(column1 ,column2) AS column3
FROM table;

1

Tôi đã sử dụng cách này và nó là tốt nhất mãi mãi. Trong mã này null cũng được xử lý

SELECT Title,
FirstName,
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer

Thử cái này...



0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              

Cách đơn giản để kết hợp
Ravin
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.