postgres encuentra códigos postales cerca de un código postal específico

Asumiendo una tabla de Postgres que contenga zip como varchar(10) quiero get todos los resultados que coincidan con un file zip específico o extender mis resultados con inputs cercanas a la consulta en caso de que no haya suficientes resultados. Decir:

Un usuario busca zip código zip "56500" y mi set de resultados devuelve 2 elementos que ejecutan una coincidencia exacta. En este caso, quiero realizar un tipo de consulta like que encuentre inputs "565%". Eventualmente necesito ejecutar esto en una consulta.

¿Alguna sugerencia?

Algo como esto podría ser lo que quieras:

 SELECT … FROM atable WHERE zip = @zip UNION ALL SELECT … FROM atable WHERE NOT EXISTS ( SELECT * FROM atable WHERE zip = @zip ) AND zip LIKE CONCAT(LEFT(@zip, 3), '%') 

Puede que esta no sea la solución más eficiente, pero al less es una consulta única, por lo que podría ser un buen punto de partida.

ORDER BY el delta desde el zip deseado?

Por lo tanto, esto no es específicamente para PostgreSQL, en realidad fue escrito originalmente para MySQL, pero debería funcionar. Me encontré con este artículo hace un time que mostraba cómo crear una database que contenía códigos postales y latitud / longitud para cada código postal, luego usaba trigonometría para calcular la distancia entre los códigos postales. Eche un vistazo al enlace. Estoy seguro de que te ayudará …

http://www.chrissibert.com/blog/2009/06/16/mysql-zip-codes-latitude-longitude-distance/

Intereting Posts