web-dev-qa-db-fra.com

MySQL combine deux colonnes en une seule

J'essaie de trouver un moyen de combiner deux colonnes en une seule, mais continue à obtenir la valeur '0' dans la colonne plutôt que la combinaison des mots.

Ce sont ce que j'ai essayé aussi bien que d'autres:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Est-ce que quelqu'un pourrait me faire savoir ce que je fais mal?

84
aab

Mon hypothèse est que vous utilisez MySQL où l'opérateur + effectue l'addition, ainsi que la conversion silencieuse des valeurs en nombres. Si une valeur ne commence pas par un chiffre, la valeur convertie est alors 0.

Alors essayez ceci:

select concat(column1, column2)

Deux façons d'ajouter un espace:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)
144
Gordon Linoff

Essayez ça, ça marche pour moi

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

C'est un travail pour moi

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
11
sk juli kaka

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

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

Pour les fans de MySQL, j'aime bien la fonction IFNULL(). D'autres réponses suggèrent des fonctionnalités similaires avec la fonction ISNULL() 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 NULL Voici comment je les ai combinées 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 NULL donnent un NULL. J'ai eu la valeur alternative dans ces cas.

3
2NinerRomeo

Si vous travaillez sur Oracle Alors:

SELECT column1 || column2 AS column3
FROM table;

OR

Si vous travaillez sur MySql alors:

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

J'ai utilisé cette façon et c'est un meilleur pour toujours. Dans ce code null également traité

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

Essaye ça...

1
Sunil Acharya
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
0
Ravin
convert(varchar, column_name1) + (varchar, column_name)
0
Ritesh Yadav