MySQL łączy dwie kolumny w jedną

106

Próbuję znaleźć sposób na połączenie dwóch kolumn w jedną, ale zamiast tego otrzymuję wartość „0” w kolumnie zamiast kombinacji słów.

Oto, czego próbowałem, a także inne:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Czy ktoś mógłby mi powiedzieć, co robię źle?

aab
źródło
1
Z jakiej bazy danych korzystasz? Jakie są typy tych dwóch kolumn?
Gordon Linoff,
Sprawdź to: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid
Użyj rozwiązania najlepszej odpowiedzi, ale dodaj rurkę. select concat (kolumna1, „|”, kolumna2). Pomaga w późniejszych osiągnięciach
Cosmic Hawk

Odpowiedzi:

167

Domyślam się, że używasz MySQL, w którym +operator dodaje, wraz z cichą konwersją wartości na liczby. Jeśli wartość nie zaczyna się od cyfry, to przekonwertowana wartość to 0.

Więc spróbuj tego:

select concat(column1, column2)

Dwa sposoby dodania spacji:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
Gordon Linoff
źródło
używam sql server 2005i daje mi to błąd, jakIncorrect syntax near ')'.
hud
5
@coder. . . To pytanie jest oznaczone jako „mysql”. Jeśli masz pytanie dotyczące programu SQL Server, zadaj je jako pytanie, a nie w komentarzu.
Gordon Linoff
Działa również dla T-SQL, doskonałe i proste rozwiązanie. Zmniejsza dwie kolumny w jedną.
Ryan Battistone
23

Spróbuj tego, to działa dla mnie

select (column1 || ' '|| column2) from table;
Oreniwa Babatunde
źródło
1
To wygląda jak Oracle.
Coburne
To działało również w przypadku łączenia wielu (więcej niż 2) kolumn. Thx
Kayathiri
Standard SQL udostępnia funkcję CONCAT () do łączenia dwóch ciągów w jeden ciąg. Jednak SQLite nie obsługuje funkcji CONCAT (). Zamiast tego używa operatora konkatenacji (||), aby połączyć dwa ciągi w jeden.
PaulH
14

To dla mnie praca

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
sk juli kaka
źródło
5

To jedyne rozwiązanie, które by się sprawdziło, gdy potrzebowałem spacji między scalanymi kolumnami.

select concat(concat(column1,' '), column2)
mattk
źródło
3

Dla fanów MySQL podoba mi się ta IFNULL()funkcja. Inne odpowiedzi sugerują podobną funkcjonalność z ISNULL()funkcją w niektórych implementacjach. W mojej sytuacji mam kolumnę opisów, która jest NOT NULL, oraz kolumnę numerów seryjnych, która może być. NULLOto jak je połączyłem w jedną kolumnę:

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

Moje wyniki sugerują, że wyniki konkatenacji ciągu z NULLwynikami w a NULL. W tych przypadkach uzyskiwałem alternatywną wartość.

2NinerRomeo
źródło
3

Jeśli pracujesz, to Oracle:

SELECT column1 || column2 AS column3
FROM table;

LUB

Jeśli pracujesz na MySql, to:

SELECT Concat(column1 ,column2) AS column3
FROM table;
Balaji Dongare
źródło
1

Używałem tego sposobu i jest najlepszy na zawsze. W tym kodzie obsłużono również null

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

Spróbuj tego...

Sunil Acharya
źródło
0
convert(varchar, column_name1) + (varchar, column_name)
Ritesh Yadav
źródło
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Grabież
źródło
Prosty sposób na połączenie
Ravin