2017-10-06 4 views
1

J'essaie d'écrire une instruction SQL pour afficher les données de deux tables différentes (sans colonne commune), mais le seul problème est que la colonne que j'essaie de joindre les deux tables sont différentes longueurs. L'un est composé principalement de 3 caractères et l'autre de 2 caractères. Ainsi, dans les cas où les deux colonnes ont des valeurs de même longueur, il peut sortir sans NULL (ex UK et UK), mais dans les scénarios 3: 2 (USA et US), il ne le fait pas. J'utilise SQL Developer. Voici ce que j'ai compris jusqu'à présent.Affichage des données de deux tables différentes avec des valeurs de longueur différente

SELECT CUST_NO, CNAME, COUNTRY_ID, COUNTRY_CD, COUNTRY_NAME 
FROM CUSTOMERS 
RIGHT OUTER JOIN COUNTRIES ON CUSTOMERS.COUNTRY_CD = COUNTRIES.COUNTRY_ID 
WHERE COUNTRIES.COUNTRY_ID LIKE '_%_%'; 

données Exemples de clients:

CUST_NO: 1053 

CNAME: Sportwaren G.m.b.H 3 

STATUS: A 

CUST_TYPE: SPORTS: Sports Chain 

COUNTRY_CD: GER 

BRANCH_CD: FRNK 

données Exemples de pays:

COUNTRY_ID: AR 

COUNTRY_NAME: ARGENTINA 

REGION_ID: 2 
+0

Pouvez-vous donner quelques exemples de données? –

+0

Je ne pouvais pas le copier/coller directement à partir de SQL, donc j'ai juste tapé une ligne des deux tables avec les noms des colonnes. – Glaz

+0

ok bien il me semble que COUNTRY_ID devrait être égal à COUNTRY_CD. Si ce n'est pas le cas, le problème de nettoyage des données –

Répondre

1
SELECT cust_no 
    , cname 
    , country_id 
    , country_cd 
    , country_name 
    FROM customers 
     RIGHT OUTER JOIN countries ON SUBSTR (customers.country_cd, 1, 2) = SUBSTR (countries.country_id, 1, 2)