MySQL menggabungkan dua kolom menjadi satu kolom

106

Saya mencoba menemukan cara untuk menggabungkan dua kolom menjadi satu, tetapi tetap mendapatkan nilai '0' di kolom tersebut alih-alih kombinasi kata-kata.

Ini adalah apa yang telah saya coba dan juga yang lainnya:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Bisakah seseorang memberi tahu saya apa yang saya lakukan salah?

aab
sumber
1
Database apa yang Anda gunakan? Apa tipe dari dua kolom tersebut?
Gordon Linoff
kemungkinan duplikat dari menggabungkan dua kolom database menjadi satu kolom
kumpulan hasil
Lihat ini: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid
Gunakan solusi jawaban teratas tetapi tambahkan pipa. pilih concat (kolom1, '|', kolom2). Ini membantu dalam unggul nanti
Cosmic Hawk

Jawaban:

168

Dugaan saya adalah bahwa Anda menggunakan MySQL di mana +operator melakukan penambahan, bersama dengan konversi nilai ke angka secara diam-diam. Jika suatu nilai tidak dimulai dengan digit, maka nilai yang dikonversi adalah 0.

Jadi coba ini:

select concat(column1, column2)

Dua cara untuk menambahkan spasi:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
Gordon Linoff
sumber
saya menggunakan sql server 2005dan itu memberi saya kesalahan sebagaiIncorrect syntax near ')'.
hud
5
@ moderator. . . Pertanyaan ini diberi tag "mysql". Jika Anda memiliki pertanyaan tentang SQL Server, tanyakan sebagai pertanyaan, bukan dalam komentar.
Gordon Linoff
Bekerja untuk T-SQL juga, solusi yang sangat baik dan sederhana. Mengurangi dua kolom menjadi satu.
Ryan Battistone
23

Coba ini, ini berhasil untuk saya

select (column1 || ' '|| column2) from table;
Oreniwa Babatunde
sumber
1
Ini terlihat seperti Oracle.
coburne
Ini juga berfungsi untuk menggabungkan beberapa (lebih dari 2) kolom. Thx
Kayathiri
Standar SQL menyediakan fungsi CONCAT () untuk menggabungkan dua string menjadi satu string. SQLite, bagaimanapun, tidak mendukung fungsi CONCAT (). Sebaliknya, ia menggunakan operator concatenate (||) untuk menggabungkan dua string menjadi satu.
PaulH
14

Ini bekerja untuk saya

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
sk juli kaka
sumber
5

Ini adalah satu-satunya solusi yang akan berhasil untuk saya, ketika saya membutuhkan spasi di antara kolom yang akan digabungkan.

select concat(concat(column1,' '), column2)
Mattk
sumber
3

Untuk penggemar MySQL di luar sana, saya suka IFNULL()fungsinya. Jawaban lain di sini menyarankan fungsionalitas serupa dengan ISNULL()fungsi dalam beberapa implementasi. Dalam situasi saya, saya memiliki kolom deskripsi yang mana NOT NULL, dan kolom nomor seri yang mungkin. NULLBeginilah cara saya menggabungkannya menjadi satu kolom:

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

Hasil saya menunjukkan bahwa hasil penggabungan string dengan NULLhasil di a NULL. Saya telah mendapatkan nilai alternatif dalam kasus tersebut.

2NinerRomeo
sumber
3

Jika Anda Sedang Bekerja OracleKemudian:

SELECT column1 || column2 AS column3
FROM table;

ATAU

Jika Anda Bekerja di MySql Kemudian:

SELECT Concat(column1 ,column2) AS column3
FROM table;
Balaji Dongare
sumber
1

Saya telah menggunakan cara ini dan itu yang terbaik selamanya. Dalam kode ini null juga ditangani

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

Coba ini...

Sunil Acharya
sumber
0
convert(varchar, column_name1) + (varchar, column_name)
Ritesh Yadav
sumber
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Hasil buruan
sumber
Cara sederhana untuk menggabungkan
Ravin