MySQL combina due colonne in una colonna


106

Sto cercando di trovare un modo per combinare due colonne in una, ma continuo a ottenere il valore "0" nella colonna invece della combinazione delle parole.

Questi sono ciò che ho provato e altri:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Qualcuno potrebbe farmi sapere cosa sto sbagliando?


1
che database stai usando? Quali sono i tipi delle due colonne?
Gordon Linoff



Usa la soluzione della risposta in alto ma aggiungi una pipe. selezionare concat (colonna1, '|', colonna2). Aiuta a eccellere in seguito
Cosmic Hawk

Risposte:


168

La mia ipotesi è che tu stia utilizzando MySQL in cui l' +operatore fa l'addizione, insieme alla conversione silenziosa dei valori in numeri. Se un valore non inizia con una cifra, il valore convertito è 0.

Quindi prova questo:

select concat(column1, column2)

Due modi per aggiungere uno spazio:

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

Sto usando sql server 2005e mi dà un errore comeIncorrect syntax near ')'.
hud

5
@programmatore . . . Questa domanda è contrassegnata come "mysql". Se hai una domanda su SQL Server, ponila come domanda, non come commento.
Gordon Linoff

Funziona anche per T-SQL, soluzione eccellente e semplice. Riduce due colonne in una.
Ryan Battistone

23

Prova questo, funziona per me

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

1
Questo sembra Oracle.
coburne

Questo ha funzionato anche per la combinazione di più (più di 2) colonne. Thx
Kayathiri

Lo standard SQL fornisce la funzione CONCAT () per concatenare due stringhe in una singola stringa. SQLite, tuttavia, non supporta la funzione CONCAT (). Invece, usa l'operatore concatenate (||) per unire due stringhe in una.
PaulH

14

È lavoro per me

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;

5

Questa è l'unica soluzione che funzionerebbe per me, quando ho richiesto uno spazio tra le colonne da unire.

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

3

Per i fan di MySQL là fuori, mi piace la IFNULL()funzione. Altre risposte qui suggeriscono funzionalità simili con la ISNULL()funzione in alcune implementazioni. Nella mia situazione, ho una colonna di descrizioni che è NOT NULLe una colonna di numeri di serie che potrebbero NULLessere.È così che le ho combinate in una colonna:

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

I miei risultati suggeriscono che i risultati della concatenazione di una stringa con NULLrisultati in un file NULL. Ho ottenuto il valore alternativo in quei casi.


3

Se stai lavorando su Oracleallora:

SELECT column1 || column2 AS column3
FROM table;

O

Se stai lavorando su MySql, allora:

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

1

L'ho usato in questo modo ed è il migliore per sempre. In questo codice viene gestito anche null

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

Prova questo...



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

Modo semplice per combinare
Ravin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.