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.