2016-06-06 4 views
0

Ich habe ein sehr seltsames Problem, wenn ich die folgenden Join an zwei verschiedenen Tabellen in Teradata tun. Es gibt keine Ergebnisse zurück, was darauf hinweist, dass zwischen Tabelle_A und Tabelle_B kein gemeinsamer Wert vorhanden ist.Problem mit beitreten in Teradata

SELECT 
* 
FROM 
table_A a JOIN table_B b ON a.id = b.id; 

<>

0 rows returned 

Allerdings, wenn ich die folgenden zwei Abfragen ausführen, ich bekomme Ergebnisse anzeigt, dass die ID-Spalte in beiden Tabellen mit ‚John‘ mindestens eine Zeile hat.

SELECT 
id 
FROM table_A 
WHERE 
id = 'John'; 

<>

1 row returned 

SELECT 
id 
FROM table_B 
WHERE 
id = 'John'; 

<>

1 row returned 

Der Datentyp für alle Spalten in TABLE_A und Table_B ist null

+0

Können Sie versuchen: 'ON trim (a.id) = trimmen (b.id);' um sicherzustellen, dass dort kein weißer Raum hängt? Sie sagen auch, dass der Datentyp für diese Felder NULL ist? Ich glaube nicht, dass Sie einen NULL-Datentyp haben können. Ist es ein Char() oder VARCHAR() für die ID-Felder? – JNevill

+0

Und was wird von den einzelnen Abfragen zurückgegeben? Was ist der Datentyp von ID? – dnoeth

+0

Was wird zurückgegeben, wenn Sie zu einem FULL OUTER JOIN wechseln? – dnoeth

Antwort

0

Können Sie versuchen, den folgenden Ansatz:

ON trim(UPPER(table_A.id)) = trim(UPPER(table_B.id))