web-dev-qa-db-fra.com

Combine la colonne varchar avec la colonne int

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)

25
Gabe

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:

  1. La méthode de concaténation/opérateur
  2. Si la base de données gère la conversion de type de données implicite

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)
35
OMG Ponies

Essaye ça:

SELECT Convert( foold, SQL_CHAR ) + ' ' + fooName FROM mytable

ou

SELECT Cast( foold AS SQL_CHAR(10) ) + ' ' + fooName FROM mytable
2
Alex W

Ouais ça devrait aller, tant que le champ lié est une chaîne.

Quelle est l'erreur que vous obtenez?

0
ozczecho

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
0
Sourcephy

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.

0
Justin K