MySQL iki sütunu bir sütunda birleştirir


106

İki sütunu birde birleştirmenin bir yolunu bulmaya çalışıyorum, ancak kelimelerin kombinasyonu yerine sütunda '0' değerini almaya devam et.

Bunlar diğerleri kadar denediğim şeyler:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Lütfen birisi bana neyi yanlış yaptığımı bildirebilir mi?


1
Hangi veritabanını kullanıyorsunuz? İki sütunun türleri nelerdir?
Gordon Linoff



En iyi yanıtın çözümünü kullanın, ancak bir boru ekleyin. concat (sütun1, '|', sütun2) seçin. Daha sonra mükemmelliğe yardımcı olur
Cosmic Hawk

Yanıtlar:


167

Tahminim, +operatörün değerlerin sessizce sayılara dönüştürülmesinin yanı sıra toplama yaptığı MySQL'i kullanıyorsunuz . Değer bir rakamla başlamazsa, dönüştürülen değer olur 0.

Öyleyse şunu dene:

select concat(column1, column2)

Boşluk eklemenin iki yolu:

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

kullanıyorum sql server 2005ve bana hata veriyorIncorrect syntax near ')'.
hud

5
@coder. . . Bu soru "mysql" olarak etiketlenmiştir. SQL Server hakkında bir sorunuz varsa, bunu yorumda değil, soru olarak sorun.
Gordon Linoff

T-SQL için de çalışıyor, mükemmel ve basit bir çözüm. İki sütunu bir sütun haline getirir.
Ryan Battistone

23

Bunu dene, benim için çalışıyor

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

1
Bu Oracle'a benziyor.
coburne

Bu, birden çok (2'den fazla) sütunu birleştirmek için de çalıştı. Thx
Kayathiri

SQL standardı, iki dizeyi tek bir dizede birleştirmek için CONCAT () işlevini sağlar. SQLite, ancak CONCAT () işlevini desteklemez. Bunun yerine, iki dizeyi bir dizide birleştirmek için bitiştirme operatörünü (||) kullanır.
PaulH


5

Birleştirilen sütunlar arasında boşluk istediğimde işime yarayacak tek çözüm budur.

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

3

MySQL hayranları için bu IFNULL()işlevi beğendim . Buradaki diğer yanıtlar ISNULL(), bazı uygulamalardaki işlevle benzer işlevsellik önermektedir . Benim durumumda, bir açıklama NOT NULLsütunum ve olabilecek bir seri numarası NULLsütunum var. Bunları tek bir sütunda birleştirdim:

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

Sonuçlarım, bir dizeyi bitiştirmenin NULLsonuçlarının bir NULL. Bu durumlarda alternatif değeri elde ediyorum.


3

OracleO Zaman Üzerinde Çalışıyorsanız :

SELECT column1 || column2 AS column3
FROM table;

VEYA

MySql Üzerinde Çalışıyorsanız:

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

1

Bu şekilde kullandım ve sonsuza dek en iyisi. Bu kodda null da ele alındı

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

Bunu dene...



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

Birleştirmenin basit yolu
Ravin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.