MySQL combine deux colonnes en une seule colonne

106

J'essaie de trouver un moyen de combiner deux colonnes en une, mais continuez à obtenir la valeur «0» dans la colonne à la place de la combinaison des mots.

Voici ce que j'ai essayé ainsi que d'autres:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Quelqu'un pourrait-il me faire savoir ce que je fais de mal?

aab
la source
1
Quelle base de données utilisez-vous? Quels sont les types des deux colonnes?
Gordon Linoff
duplication possible de concaténer deux colonnes de base de données dans une colonne de résultats
Choudhury Saadmaan Mahmid
Vérifiez ceci: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid
Utilisez la solution de la meilleure réponse mais ajoutez un tuyau. sélectionnez concat (colonne1, '|', colonne2). Ça aide à exceller plus tard
Cosmic Hawk

Réponses:

167

Je suppose que vous utilisez MySQL où l' +opérateur fait des ajouts, avec une conversion silencieuse des valeurs en nombres. Si une valeur ne commence pas par un chiffre, la valeur convertie est 0.

Alors essayez ceci:

select concat(column1, column2)

Deux façons d'ajouter un espace:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
Gordon Linoff
la source
J'utilise sql server 2005et cela me donne une erreur commeIncorrect syntax near ')'.
hud
5
@coder. . . Cette question est étiquetée "mysql". Si vous avez une question sur SQL Server, posez-la sous forme de question, pas dans un commentaire.
Gordon Linoff
Fonctionne également pour T-SQL, solution excellente et simple. Réduit deux colonnes en une seule.
Ryan Battistone
23

Essayez ça, ça marche pour moi

select (column1 || ' '|| column2) from table;
Oreniwa Babatunde
la source
1
Cela ressemble à Oracle.
coburne
Cela fonctionnait également pour combiner plusieurs (plus de 2) colonnes. Thx
Kayathiri
Le standard SQL fournit la fonction CONCAT () pour concaténer deux chaînes en une seule chaîne. SQLite, cependant, ne prend pas en charge la fonction CONCAT (). Au lieu de cela, il utilise l'opérateur de concaténation (||) pour joindre deux chaînes en une seule.
PaulH
14

C'est du travail pour moi

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

C'est la seule solution qui fonctionnerait pour moi, lorsque j'avais besoin d'un espace entre les colonnes en cours de fusion.

select concat(concat(column1,' '), column2)
Mattk
la source
3

Pour les fans de MySQL, j'aime la IFNULL()fonction. D'autres réponses suggèrent ici des fonctionnalités similaires avec la ISNULL()fonction dans certaines implémentations. Dans ma situation, j'ai une colonne de descriptions qui est NOT NULL, et une colonne de numéros de série qui peuvent être NULLVoici comment je les ai combinés dans une colonne:

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

Mes résultats suggèrent que les résultats de la concaténation d'une chaîne avec des NULLrésultats dans un fichier NULL. J'ai obtenu la valeur alternative dans ces cas.

2NinerRomeo
la source
3

Si vous travaillez Oraclealors:

SELECT column1 || column2 AS column3
FROM table;

OU

Si vous travaillez sur MySql, alors:

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

J'ai utilisé cette façon et c'est le meilleur pour toujours. Dans ce code, null également géré

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

Essaye ça...

Sunil Acharya
la source
0
convert(varchar, column_name1) + (varchar, column_name)
Ritesh Yadav
la source
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Ravin
la source
Manière simple de combiner
Ravin