Tente isso para comparar apenas os primeiros 8 caracteres:
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;
O elenco apara implicitamente os caracteres à direita.
ddid
tem apenas 8 caracteres para começar. Não há necessidade de processá-lo também. Isso consegue o mesmo:JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
No entanto, esteja ciente de que a função string
left()
foi introduzido apenas com o PostgreSQL 9.1. Em versões anteriores, você pode substituir:JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Explicação básica para iniciantes:
-
A consulta usa umJOIN
. Leia mais sobre isso no manual .
-
FROM domainregion r
é a abreviação deFROM domainregion AS r
.AS
é apenas ruído neste caso no PostgreSQL. O alias da tabela torna a consulta mais curta e fácil de ler, mas não tem outro impacto aqui. Você também pode usar aliases de tabela para incluir a mesma tabela várias vezes, por exemplo.
-
A condição de junçãoON r.domainid::varchar(8) = d.ddid
une apenas as linhas em que as duas expressões correspondem exatamente. Novamente, leia sobre esses básico no manual (ou qualquer outra fonte).
É uma consulta simples, não há muito para explicar aqui.