Prova detta för att endast jämföra de första 8 tecknen:
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;
Skådespelarna trimmar implicit efterföljande karaktärer. ddid
har bara 8 tecken till att börja med. Du behöver inte bearbeta det heller. Detta uppnår samma:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Kom dock ihåg att strängfunktionen left()
introducerades endast med PostgreSQL 9.1. I tidigare versioner kan du ersätta:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Grundläggande förklaring för nybörjare:
-
Frågan använder en
JOIN
. Läs mer om det i manualen . -
FROM domainregion r
är en förkortning förFROM domainregion AS r
.AS
är bara brus i det här fallet i PostgreSQL. Tabellaliaset gör frågan kortare och lättare att läsa men har ingen annan inverkan här. Du kan också använda tabellalias för att inkludera samma tabell flera gånger till exempel. -
Anslutningsvillkoret
ON r.domainid::varchar(8) = d.ddid
sammanfogar endast de rader där de två uttrycken matchar exakt. Återigen, läs om dessa grunderna i manualen (eller någon annan källa).
Det är en enkel fråga, inte mycket att förklara här.