2008-11-28 13 views
75

Espero que la columna sea VARCHAR2, en mi base de datos Oracle.Necesito almacenar códigos postales en una base de datos. ¿Qué tan grande debe ser la columna?

de EE.UU. cremalleras están 9.

canadiense es 7.

Pienso 32 caracteres serían límite superior razonable

¿Qué me falta?

[EDIT] TIL: 12 es una respuesta razonable a la pregunta Gracias a todos los que contribuyeron.

+2

Según http: //en.wikipedia .org/wiki/List_of_postal_codes, el más largo tiene 12 caracteres, si está almacenando el '-', sino 11 –

+0

Enlace útil, sin embargo, su precisión puede estar un poco fuera. Por ejemplo, enumera los códigos postales australianos como 7 caracteres, cuando de hecho son 4. Ref: http://en.wikipedia.org/wiki/Postcodes_in_Australia y la lista de códigos postales disponible en http://www1.auspost.com.au/códigos postales /. – rossp

+0

re: mi comentario anterior - eso no significa que esta lista no sea útil como guía. Suponiendo que la lista se equivoca en el lado de los códigos postales más largos, la longitud más larga es de 9 caracteres, por lo que 16 caracteres aproximadamente le darán suficiente espacio para respirar. – rossp

Respuesta

2

códigos postales canadienses son sólo 6 caracteres, en forma de letra y los números de (LNLNLN)

+3

Los códigos postales canadienses tienen un espacio en blanco en el medio "ANA NAN" Eso son 7 caracteres. – EvilTeach

+1

Pero el espacio siempre está en el medio, por lo que no es necesario almacenarlo. –

+0

@EvilTeach - sí, pero puede esperar que los datos se normalicen antes de almacenarse – ysth

33

Skimming a través Wikipedia's Postal Codes page, 32 caracteres debería ser más que suficiente. Yo diría que incluso 16 caracteres son buenos.

+3

Buen enlace. Incluso teniendo en cuenta la puntuación en US ZIP + 4, 10 caracteres serían suficientes para cualquier país por lo que pude ver. –

+0

Basado en este enlace, de la página vinculada anteriormente, me gustaría ir con 18 para acomodar países como Chile: https://en.wikipedia.org/wiki/List_of_postal_codes – mopo922

+1

Chile tiene 7 caracteres. La página web a la que se hace referencia simplemente muestra la varianza de puntuación. – EvilTeach

3

Lo que hace falta es una razón por la que necesita que el código postal se maneje especialmente.

Si realmente no necesita TRABAJAR con un código postal, le sugiero que no se preocupe por ello. Por trabajo, me refiero a hacer un procesamiento especial en lugar de utilizarlo para imprimir etiquetas de dirección, etc.

Simplemente cree tres o cuatro campos de dirección de VARCHAR2 (50) [por ejemplo] y deje que el usuario ingrese lo que quiera.

¿Realmente usted necesita para agrupar sus pedidos o transacciones por código postal? Creo que no, ya que diferentes países tienen esquemas muy diferentes para este campo.

+0

Estoy de acuerdo. Al utilizar un campo VARCHAR2, la realidad es que para un campo como el código postal realmente no importa. Un poco demasiado grande es mejor que molestar a un cliente porque no pueden ingresar sus detalles. –

+0

Y los varchar son prácticos ya que las bases de datos (al menos DB2) pueden optimizar el almacenamiento de ellos, para no desperdiciar espacio de almacenamiento. – paxdiablo

+1

, uno podría señalar que la clasificación por país y código postal dará lugar a tarifas postales más baratas en algunos lugares. – EvilTeach

3

Normalización? Los códigos postales pueden usarse más de una vez y pueden estar relacionados con nombres de calles o ciudades. Mesa (s) separada (s)

+0

Interesante. Un punto de vista diferente simplemente downvoted sin razón por qué. +1 – EvilTeach

+0

Un código postal generalmente hará referencia a un bloque en un lado de la calle. Para encontrar una región más amplia, debe seleccionar la primera mitad del código postal. Tener esta información en una tabla separada realmente no ayudará nada y sería más complicado de mantener. – RevNoah

+1

@EvilTeach: apuesto a que fue downvoted porque está fuera de tema. ¿Te dice qué tan grande debe ser una columna para almacenar todos los códigos postales posibles en el mundo? No. – wmax

10

¿Por qué declararía un tamaño de campo más grande que los datos reales que espera almacenar en él?

Si la versión inicial de su aplicación admite direcciones de EE. UU. Y Canadá (lo que estoy deduciendo por el hecho de que menciona esos tamaños en su pregunta), declararía el campo como VARCHAR2 (9) (o VARCHAR2 (10) si tiene la intención de almacenar el guión en los campos ZIP + 4). Incluso si miramos las publicaciones que otros han hecho sobre códigos postales en distintos países, VARCHAR2 (9) o VARCHAR2 (10) serían suficientes para la mayoría, si no para todos los demás países.

Más abajo, siempre puede ALTERAR la columna para aumentar la longitud en caso de necesidad. Pero generalmente es difícil evitar que alguien, en algún lugar, decida ser "creativo" y meter 50 caracteres en un campo VARCHAR2 (50) por una razón u otra (es decir, porque quiere otra línea en una etiqueta de envío). También debe lidiar con la prueba de los casos límite (¿cada aplicación que muestre un ZIP maneja 50 caracteres?). Y con el hecho de que cuando los clientes recuperan datos de la base de datos, generalmente asignan la memoria en función del tamaño máximo de los datos que se obtendrán, no la longitud real de una fila determinada. Probablemente no es un gran problema en este caso específico, pero 40 bytes por fila podría ser un pedazo decente de RAM para algunas situaciones.

Como un aparte, también podría considerar almacenar (al menos para las direcciones de EE. UU.) El código postal y la extensión +4 por separado.En general, es útil poder generar informes por región geográfica y, con frecuencia, puede querer juntar todo en un código postal en lugar de desglosarlo por la extensión +4. En ese punto, es útil no tener que tratar de SUBSTRAR los primeros 5 caracteres para el código postal.

+3

Bueno, suponiendo que estamos codificando en algo tonto como Pro * C, tener el campo lo suficientemente grande como para crecer significa que no será necesario tocar el código si aumenta el uso. – EvilTeach

+0

Si, romper el código postal de EE. UU. En 5 y 4 dígitos puede tener sentido, dependiendo de lo que planee usar. Por ejemplo, si está haciendo algún tipo de coincidencia de dirección, es posible que desee coincidir primero en el zip5 y resolver situaciones ambiguas con el zip 9. También ayuda usar un código de país – EvilTeach

1

Si desea integrar los códigos postales en la base de datos, entonces es mejor utilizar la base de datos geonames. Aunque es difícil de usar y entender, es la base de datos geográficos más grande disponible para usuarios como nosotros.

Todas las otras bases de datos de este tipo tienen más o menos la misma información y estructura. Simplemente eliminan parte de la información extra/redundante de la base de datos. Si solo lo hace para sistemas de baja carga, use sus servicios gratuitos, los límites son atractivos y proporciona una interfaz más fácil usando json y ajax. Puede ver los límites here

Para su información varchar (20) es suficiente para almacenar códigos postales

16

Como ya se ha planteado por @ Neil-McGuigan, Wikipedia tiene una página decente sobre el tema. Basado en que 12 caracteres deberían hacerlo: http://en.wikipedia.org/wiki/List_of_postal_codes

El artículo de la wikipedia enumera ~ 254 países, que es bastante bueno con respecto a UPU (Universal Postal Union) tiene 192 países miembros.

normas
+2

Parece que, Montserrat tiene 13 caracteres, ejemplo dado como "MSR 1110-1350", en el enlace compartido anterior. –

+0

Tenga en cuenta que Montserrat tiene solo 8 caracteres, 1110-1350 indica un rango. https://discovermni.com/about-montserrat/montserrat-post-codes/ –

+0

Es posible que Wikipedia necesite editarse, ya que el código postal de aspecto similar para Malta tiene uno genérico como "AAA NNNN". No me importaría tener incluso 15 caracteres porque solo podría haber menos problemas más tarde si tenemos que ajustar la longitud de la columna, también con el uso correcto de los tipos de datos, no debería tomar los 15 caracteres de todos modos (posiblemente varchar o nvarchar o similares?) . –

0

Reino Unido han publicado: UK Government Data Standards Catalogue

Max 35 characters per line 

Postal Internacional Dirección:

Minimum of 2 lines and maximum of 5 lines for the postal delivery point 
details, plus 1 line for country and 1 line for postcode/zip code 

El Reino Unido longitud del código postal es:

Minimum 6 and Maximum 8 characters 
Cuestiones relacionadas