jointure sql int varchar
J'ai été la recherche les questions mais pas de réponse. Je voudrais faire une jointure interne avec le Tableau 1 et le Tableau 2 , mais un champ est de type INT et l'autre est de type VARCHAR (avec la structure "INT"). Quelque chose comme:
Table1 Table2
ID NAME WHATEVER ID USER
1 A-001 --- 1 001
2 A-002 --- 2 002
3 A-003 --- 3 003
3 A-004 --- 4 004
...
Comment puis-je construire la requête? Quelque chose comme:
... Table1 INNER JOIN Table2 ON Table1.NAME = Table2.[A-USER] ...
qui sgbd ? pour ces opérations, les fonctions sont souvent différents de l'un à l'autre...
Est-ce la
Est-ce la
ID
ou la USER
champ de Table2
que vous souhaitez utiliser dans la jointure?OriginalL'auteur Pete | 2012-10-09
Vous devez vous connecter pour publier un commentaire.
Vous devez convertir les
int
de la valeur àvarchar
et concatentate avec'A-'
, ou d'obtenir de la partie numérique de lavarchar
valeur et de les convertir àint
.Cela se fait un peu différemment en fonction de la base de données que vous utilisez, pour SQL Server, il devrait ressembler à ceci:
OriginalL'auteur Guffa
Essayer par concaténation,
mais attention, cela diminue les performances.
USER
a000
format.Oui, c'est pourquoi j'ai supprimé, désolé 😉
dans MYSQL, cela ne fonctionne que si b.L'utilisateur est une chaîne de caractères. Si vous avez besoin de concaténer (et fonte) types d'utilisation
concat('A-', b.User)
OriginalL'auteur John Woo
Vous voulez faire une jointure interne sur la Table1.NOM = Table2.[UTILISATEUR].
Si Table1.NOM, Table2.[UTILISATEUR] colonne de type de données est différent de moyens, il n'est pas possible d'utiliser une jointure interne.
OriginalL'auteur Siva