Question

Auparavant, j'ai demandé à supprimer du texte d'un champ et à le convertir en int, cela fonctionne correctement. Mais maintenant, je voudrais faire un INNER JOIN sur cette nouvelle valeur.

J'ai donc ceci:

SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) 
AS 'memId',  userDetails.title, userDetails.lname 
FROM accountingTab INNER JOIN
(SELECT id, title, first, last FROM memDetTab) AS userDetails ON memID = userDetails.id

Ensuite, le nom de colonne invalide memID s'affiche.

Comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Si vous devez le faire, vous rencontrez des problèmes de conception. Si vous le pouvez, je vous conseillerais de refactoriser votre table ou vos relations.

Autres conseils

Vous pouvez répéter l’expression entière ou inverser votre jointure:


SELECT *
FROM memDetTab
    JOIN (SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) AS 'memId', userDetails.title, userDetails.lname
FROM accountingTab) subquery
    ON subquery.memID = memDetTab.ID

Au lieu de memId, répétez l'expression entière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top