@Baldur
Manchmal ist es hilfreich, den Key auf der linken Seite per cast anzupassen, also
decimal(a.Key, n, y) = b.key
oder
zoned(a.key, n, y) = b.key

Das funktioniert auch mit ungleich langen Zeichenfeldern:
cast(a.key as char(nn)) = b.key
Bringt allerdings bei Joinen von ungleichen Feldern wenig bis gar nichts! Ein Index kann (zumindest) vor Release 6.1 nur verwendet werden, wenn das Original-Feld unverändert ist. Die Verwendung von CAST oder einer skalaren Funktion bewirkt, dass das Original-Feld verändert wird. Die Länge spielt dabei keine Rolle!

Allerdings kann durch die explizite Konvertierung Einfluss darauf genommen werden kann, welche Datei "führend" verarbeitet wird und mit der anderen Datei verknüpft wird. Für die Datei, bei der die Original-Felder verwendet werden, kann ein Index verwendet werden. Für die andere Datei kann allenfalls ein Teilschlüssel verwendet werden.

Ansonsten konvertiert SQL intern selber (zumindest seit V5R3)!

Natürlich sollten z.B. in Where-Bestimmungen immer die gleichen oder compatible Datentypen verwendet werden. Wenn also z.B. das Feld Kunden-Nr. alphanumerisch ist, die Kunden-Nr. in diesem Feld jedoch numerisch ist, kann man das folgende angeben:
PHP-Code:
Where  KundeNr 4711 
Der Datensatz wird gefunden, allerdings muss für jeden zu lesenden/vergleichenden Satz eine Konvertierung vorgenommen werden, um identische Datentypen zu vergleichen zu können, was Performance kostet.

Birgitta