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?


1
Welche Datenbank verwenden Sie? Was sind die Typen der beiden Spalten?
Gordon Linoff



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)

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;

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;

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)

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.


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;

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



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

Einfache Möglichkeit zu kombinieren
Ravin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.