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?
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)
Essayez ça, ça marche pour moi
select (column1 || ' '|| column2) from table;
C'est un travail pour moi
SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
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)
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.
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;
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...
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName
convert(varchar, column_name1) + (varchar, column_name)