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?


1
Quelle base de données utilisez-vous? Quels sont les types des deux colonnes?
Gordon Linoff



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)

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;

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;

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)

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.


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;

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



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

Manière simple de combiner
Ravin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.