MySQL kombiniert zwei Spalten zu einer Spalte

106

Ich versuche einen Weg zu finden, um zwei Spalten zu einer zu kombinieren, aber erhalte weiterhin den Wert '0' in der Spalte anstelle der Kombination der Wörter.

Folgendes habe ich ebenso versucht wie andere:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Könnte jemand mich bitte wissen lassen, was ich falsch mache?

aab
quelle
1
Welche Datenbank verwenden Sie? Was sind die Typen der beiden Spalten?
Gordon Linoff
Mögliches Duplikat der Verkettung von zwei Datenbankspalten zu einer Ergebnismengenspalte
Choudhury Saadmaan Mahmid
Überprüfen Sie dies heraus: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid
Verwenden Sie die Lösung von top answer, aber fügen Sie eine Pipe hinzu. Wählen Sie concat (Spalte1, '|', Spalte2). Es hilft in Excel später
Cosmic Hawk

Antworten:

167

Ich vermute, dass Sie MySQL verwenden, wo der +Operator zusätzlich zur stillen Konvertierung der Werte in Zahlen addiert. Wenn ein Wert nicht mit einer Ziffer beginnt, lautet der konvertierte Wert 0.

Versuchen Sie Folgendes:

select concat(column1, column2)

Zwei Möglichkeiten, ein Leerzeichen hinzuzufügen:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
Gordon Linoff
quelle
Ich benutze sql server 2005und es gibt mir Fehler alsIncorrect syntax near ')'.
hud
5
@coder. . . Diese Frage ist mit "mysql" gekennzeichnet. Wenn Sie eine Frage zu SQL Server haben, stellen Sie diese als Frage und nicht in einem Kommentar.
Gordon Linoff
Funktioniert auch für T-SQL, ausgezeichnete und einfache Lösung. Reduziert zwei Spalten zu einer.
Ryan Battistone
23

Versuchen Sie dies, es funktioniert für mich

select (column1 || ' '|| column2) from table;
Oreniwa Babatunde
quelle
1
Das sieht aus wie Oracle.
Coburne
Dies funktionierte auch zum Kombinieren mehrerer (mehr als 2) Spalten. Thx
Kayathiri
Der SQL-Standard bietet die Funktion CONCAT () zum Verketten von zwei Zeichenfolgen zu einer einzelnen Zeichenfolge. SQLite unterstützt die Funktion CONCAT () jedoch nicht. Stattdessen wird der Verkettungsoperator (||) verwendet, um zwei Zeichenfolgen zu einer zu verbinden.
PaulH
14

Es ist Arbeit für mich

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

Dies ist die einzige Lösung, die für mich funktionieren würde, wenn ich ein Leerzeichen zwischen den zusammengeführten Spalten benötige.

select concat(concat(column1,' '), column2)
mattk
quelle
3

Für die MySQL-Fans da draußen gefällt mir die IFNULL()Funktion. Andere Antworten hier schlagen eine ähnliche Funktionalität mit der ISNULL()Funktion in einigen Implementierungen vor. In meiner Situation habe ich eine Spalte mit Beschreibungen NOT NULLund eine Spalte mit Seriennummern. NULLSo habe ich sie in einer Spalte zusammengefasst:

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

Meine Ergebnisse legen nahe, dass die Ergebnisse der Verkettung einer Zeichenfolge mit den NULLErgebnissen in a NULL. In diesen Fällen habe ich den alternativen Wert erhalten.

2NinerRomeo
quelle
3

Wenn Sie daran arbeiten, Oracledann:

SELECT column1 || column2 AS column3
FROM table;

ODER

Wenn Sie an MySQL arbeiten, dann:

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

Ich habe diesen Weg benutzt und es ist das Beste für immer. In diesem Code wird auch null behandelt

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

Versuche dies...

Sunil Acharya
quelle
0
convert(varchar, column_name1) + (varchar, column_name)
Ritesh Yadav
quelle
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Ravin
quelle
Einfache Möglichkeit zu kombinieren
Ravin