Ich denke, es sagt dir genau, was los ist. Sie können eine Ganzzahl nicht mit einem Varchar vergleichen. PostgreSQL ist streng und führt keine magischen Typografien für Sie durch. Ich vermute, SQLServer typisiert automatisch (was eine schlechte Sache ist).
Wenn Sie diese beiden verschiedenen Bestien vergleichen möchten, müssen Sie sie mithilfe der Casting-Syntax untereinander umwandeln ::
.
Etwas in diese Richtung:
create view view1
as
select table1.col1,table2.col1,table3.col3
from table1
inner join
table2
inner join
table3
on
table1.col4::varchar = table2.col5
....;
Beachten Sie varchar
die Typumwandlung in der Tabelle1.col4.
Beachten Sie auch, dass Typografie möglicherweise Ihren Index für diese Spalte unbrauchbar macht und eine Leistungsbeeinträchtigung zur Folge hat, die ziemlich schlecht ist. Eine noch bessere Lösung wäre zu sehen, ob Sie einen der beiden Spaltentypen dauerhaft ändern können, um ihn an den anderen anzupassen. Ändern Sie Ihr Datenbankdesign buchstäblich.
Sie können auch einen Index für die konvertierten Werte erstellen, indem Sie eine benutzerdefinierte, unveränderliche Funktion verwenden, die die Werte in die Spalte umwandelt. Aber auch dies kann sich als suboptimal erweisen (aber besser als Live-Casting).