write una sencillos ppt plus paso normalizar normalizacion normales new formas ejemplos datos create conceptos como basicos sql database ms-access standards

una - sql plus create table



Estandarización de direcciones dentro de una base de datos (1)

Trabajando en MS Access 2013. Tenga un montón de ubicaciones / direcciones que necesitan ser estandarizadas.

Los ejemplos incluyen direcciones como:

  • 500 W Main St
  • 500 West Main St
  • 500 West Main Street

Tú entiendes.

He considerado ejecutar una consulta que extrae todos los registros donde los caracteres izquierdos (7) o algo existen más de una vez en la base de datos, pero hay fallas obvias en esa lógica.

¿Existe una función o consulta o cualquier otra cosa que me ayude a generar una lista de registros cuyas direcciones pueden existir varias veces, de maneras ligeramente diferentes?


Este es un negocio complicado ... partes iguales de Magia Negra y Ciencia. Te sorprenderán las variaciones de Boulevard solo.

Por eso uso la API de Google. Para el conjunto de datos inicial puede llevar mucho tiempo, pero solo las nuevas adiciones tendrían que resolverse.

Por ejemplo

https://maps.googleapis.com/maps/api/geocode/json?address=500 S Main St,Providence RI 02903

vuelve, en parte

"formatted_address" : "500 S Main St, Providence, RI 02903, USA"

y la BUENA noticia es

https://maps.googleapis.com/maps/api/geocode/json?address=500 South Main Steet,Providence RI 02903

devuelve la misma dirección formateada que la consulta anterior

"formatted_address" : "500 S Main St, Providence, RI 02903, USA"

Ejemplo de VBA:

Al ejecutar el siguiente código ...

'' VBA project Reference required: '' Microsoft XML, v3.0 Dim httpReq As New MSXML2.ServerXMLHTTP httpReq.Open "GET", "https://maps.googleapis.com/maps/api/geocode/json?address=500 South Main Steet,Providence RI 02903", False httpReq.send Dim response As String response = httpReq.responseText

... la response variable de cadena contiene los siguientes datos JSON:

{ "results" : [ { "address_components" : [ { "long_name" : "500", "short_name" : "500", "types" : [ "street_number" ] }, { "long_name" : "South Main Street", "short_name" : "S Main St", "types" : [ "route" ] }, { "long_name" : "Fox Point", "short_name" : "Fox Point", "types" : [ "neighborhood", "political" ] }, { "long_name" : "Providence", "short_name" : "Providence", "types" : [ "locality", "political" ] }, { "long_name" : "Providence County", "short_name" : "Providence County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "Rhode Island", "short_name" : "RI", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "02903", "short_name" : "02903", "types" : [ "postal_code" ] }, { "long_name" : "2915", "short_name" : "2915", "types" : [ "postal_code_suffix" ] } ], "formatted_address" : "500 S Main St, Providence, RI 02903, USA", "geometry" : { "bounds" : { "northeast" : { "lat" : 41.82055829999999, "lng" : -71.4028137 }, "southwest" : { "lat" : 41.8204014, "lng" : -71.40319219999999 } }, "location" : { "lat" : 41.8204799, "lng" : -71.40300289999999 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 41.8218288302915, "lng" : -71.40165396970851 }, "southwest" : { "lat" : 41.8191308697085, "lng" : -71.40435193029151 } } }, "partial_match" : true, "place_id" : "ChIJicPQAT9F5IkRfq2njkYqZtE", "types" : [ "premise" ] } ], "status" : "OK" }