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?


1
Database apa yang Anda gunakan? Apa tipe dari dua kolom tersebut?
Gordon Linoff



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)

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;

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;

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)

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.


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;

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...



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

Cara sederhana untuk menggabungkan
Ravin
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.