Prueba esto para comparar solo los primeros 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;
El elenco recorta implícitamente los caracteres finales. ddid solo tiene 8 caracteres para empezar. No es necesario procesarlo también. Esto logra lo mismo:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Sin embargo, tenga en cuenta que la función de cadena left() solo se introdujo con PostgreSQL 9.1. En versiones anteriores puede sustituir:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Explicación básica para principiantes:
-
La consulta utiliza un
JOIN. Lea más sobre eso en el manual . -
FROM domainregion res la abreviatura deFROM domainregion AS r.ASes solo ruido en este caso en PostgreSQL. El alias de tabla hace que la consulta sea más corta y fácil de leer, pero no tiene ningún otro impacto aquí. También puede usar alias de tabla para incluir la misma tabla varias veces, por ejemplo. -
La condición de combinación
ON r.domainid::varchar(8) = d.ddidune solo aquellas filas donde las dos expresiones coinciden exactamente. Nuevamente, lea sobre esos conceptos básicos en el manual (o cualquier otra fuente).
Es una consulta simple, no hay mucho que explicar aquí.