J'ai deux colonnes dans une table SQL, fooId
(int) et fooName
(varchar).
Existe-t-il un moyen de sélectionner les deux en une seule colonne avec un espace entre eux?
select fooId + ' ' + fooName as fooEntity
from mytable
Ils sont de types différents donc je reçois une erreur.
Ce champ sera lié à la donnée directement dans un contrôle de l'application Web.
SQL Server 2008
(Je suis un peu débutant SQL)
La concaténation de chaînes étant différente entre les bases de données, il est donc utile de savoir quelle base de données car vous devez savoir:
SQL Server n'effectue pas de conversion implicite de valeurs numériques en valeurs de chaînes:
SELECT CAST(fooid AS VARCHAR(10)) + ' ' + fooname
... vous devez donc utiliser CAST (ou CONVERT) pour modifier explicitement le type de données en un type de données basé sur du texte.
Pour Oracle & PostgreSQL, utilisez le double tuyau pour concaténer des chaînes:
SELECT fooid || ' ' || fooname
Pour MySQL, vous pouvez utiliser la fonction CONCAT :
SELECT CONCAT(fooid, ' ', fooname)
Essaye ça:
SELECT Convert( foold, SQL_CHAR ) + ' ' + fooName FROM mytable
ou
SELECT Cast( foold AS SQL_CHAR(10) ) + ' ' + fooName FROM mytable
Ouais ça devrait aller, tant que le champ lié est une chaîne.
Quelle est l'erreur que vous obtenez?
J'utilise cette requête en MS SQL
SELECT varcharColumn + CONVERT(VARCHAR(2), intColumn) AS foo
En supposant que varcharColumn est null
SELECT ISNULL(varcharColumn, '') + CONVERT(VARCHAR(2), intColumn) AS foo
Je ne sais pas s'il s'agit de SQL standard, mais PostgreSQL utilise l'opérateur ||
pour la concaténation de chaînes. +
signifie addition numérique.