Versuchen Sie dies, um nur die ersten 8 Zeichen zu vergleichen:
SELECT r.domainid, r.dombegin, r.domend, d.ddid
FROM domainregion r
JOIN dyndomrun d ON r.domainid::varchar(8) = d.ddid
ORDER BY r.domainid, d.ddid, r.dombegin, r.domend;
Die Besetzung kürzt implizit nachgestellte Zeichen. ddid
hat zu Beginn nur 8 Zeichen. Es muss auch nicht verarbeitet werden. Dies erreicht dasselbe:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Beachten Sie jedoch, dass die Zeichenfolgenfunktion left()
wurde erst mit PostgreSQL 9.1 eingeführt. In früheren Versionen können Sie Folgendes ersetzen:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Grundlegende Erklärung für Anfänger:
-
Die Abfrage verwendet einen
JOIN
. Lesen Sie mehr darüber im Handbuch . -
FROM domainregion r
ist die Abkürzung fürFROM domainregion AS r
.AS
ist in diesem Fall in PostgreSQL nur Rauschen. Der Tabellenalias macht die Abfrage kürzer und leichter lesbar, hat aber hier keine weiteren Auswirkungen. Sie können auch Tabellenaliase verwenden, um beispielsweise dieselbe Tabelle mehrmals einzuschließen. -
Die Join-Bedingung
ON r.domainid::varchar(8) = d.ddid
verbindet nur die Zeilen, in denen die beiden Ausdrücke genau übereinstimmen. Lesen Sie noch einmal über diese Grundlagen im Handbuch (oder jede andere Quelle).
Es ist eine einfache Abfrage, die hier nicht viel zu erklären ist.