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.