¿Cuál es el tipo de columna correcto para mantener los valores de ZipCode
en la base de datos PostgreSQL
?Tipo de columna para ZipCode en la base de datos PostgreSQL?
Respuesta
Es algo así como xxxxx-xxxx, por lo que se recomienda varchar(10)
.
Si desea verificar la sintaxis de los valores en la base de datos, puede crear un tipo domain
para los códigos postales.
CREATE DOMAIN zipcode varchar(10)
CONSTRAINT valid_zipcode
CHECK (VALUE ~ '[A-Z0-9-]+'); -- or a better regular expression
Se puede echar un vistazo a this sitio, que propone esta expresión regular:
(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$)
Pero usted debe comprobar que funciona para la sintaxis de expresiones regulares PostgreSQL
.
depende del tipo de zip que desee. si está seguro de que solo necesitará almacenar los 5 dígitos estándar, entonces usar un int le ahorrará más espacio.
Sin embargo, si necesita hacer el 5 + 4 extendido, entonces un campo de caracteres de 10 dígitos es el mejor. Personalmente sugiero que, como lo hace más fácil en el futuro, si terminan necesitando códigos postales internacionales, 10 dígitos cubre casi cualquier formato de código postal posible que haya encontrado.
Los códigos postales pueden tener ceros a la izquierda, por lo que usar 'int' para un código postal es una mala idea. Los códigos postales no son números, son cadenas que simplemente se componen de números (y, a veces, un guión). –
int (5) con la propiedad * ZEROFILL * para hacer 5 en 00005. –
Estoy totalmente en desacuerdo con los consejos presentados aquí.
- La respuesta aceptada acepta cosas que no son dígitos.
- La pregunta es sobre códigos postales, no códigos postales.
- Si asumimos que la publicación es incorrecta y significa códigos postales internacionales, hay caracteres que aparecen en códigos postales internacionales que no aparecen en esa lista, y muchos códigos postales internacionales, y también los nacionales, pueden tener más de diez personajes
- Si realmente responder a la pregunta que hicieron, sobre códigos postales, entonces no debería haber alojamiento para cualquier cosa menos dígitos (y posiblemente el guión)
- códigos postales de Estados Unidos pueden tener hasta 11 dígitos de longitud (13 caracteres que cuentan los dos guiones): hay un zip, un zip + 4 y un zip + 6 (que los programadores llamarían zip + 4 + 2); el último es utilizado por rascacielos, universidades, etc.
- Los códigos postales de EE. UU. siempre son enteros no negativos y, por lo tanto, no deben almacenarse como datos de texto, lo que está sujeto a problemas de representación no canónicos (pregunte a cualquiera que haya hecho un sistema aproximadamente esa vez descubrieron que su código postal 00203 no coincidía con el código postal 203 que accidentalmente obtuvieron al analizar innecesariamente representaciones de cadenas)
- Si finge que realmente está rastreando códigos postales internacionales, la secuencia corta de caracteres limita los campos de texto aquí ni siquiera comienzan a hacer el trabajo. La palabra "China" viene a la mente.
mi opinon:
- Decidir si en realidad estás manejo de EE.UU. códigos postales o internacional
- Si usted está manejando códigos postales de Estados Unidos, rastrearlos enteros sin signo como, y Déjalos con ceros cuando el texto los represente. (Piense en las marcas temporales de Unix y las representaciones TZ locales si necesita comprender por qué será más sencillo a largo plazo).
- Si está manipulando códigos postales internacionales, guárdelos en una cadena unicode ilimitada, átelos al país donde se encuentran. representar y validar país por país con restricciones de verificación. Este problema es mucho más difícil de lo que parece desde el principio. Las direcciones internacionales son algunas de las cosas menos estandarizadas en la Tierra. Espere a averiguar cómo funcionan los números de las casas japonesas, o por qué el código postal británico 6 tiene los vacíos que tiene.
- 1. Base de datos de muestra para PostgreSQL
- 2. Restaurando la base de datos Postgresql
- 3. PostgreSQL - Renombrar base de datos
- 4. COPY (importar) datos en la columna de matriz de PostgreSQL
- 5. Alterar el tipo de datos de columna en la base de datos de producción
- 6. Comparación de tipos de columna de base de datos en MySQL, PostgreSQL y SQLite? (Cross-Mapping)
- 7. cómo eliminar un valor de columna particular solo en la base de datos postgresql?
- 8. ¿Dónde puedo descargar la base de datos Northwind para Postgresql?
- 9. cómo obtener el tamaño y el tipo de columna a través de mi base de datos en PostgreSQL
- 10. Hibernate, Postgresql: La columna "x" es de tipo oid pero la expresión es de tipo byte
- 11. Tipo de base de datos personalizada en ActiveRecord
- 12. PostgreSQL en la base de datos de memoria
- 13. base de datos convención: la columna DATETIME
- 14. Ubicación predeterminada de la base de datos PostgreSQL en Linux
- 15. reparación de base de datos PostgreSQL corrupto
- 16. ¿Cómo alterar el tipo de datos de una columna en una tabla de PostgreSQL?
- 17. PostgreSQL: Crear esquema en la base de datos específica
- 18. ¿Qué tipo de columna mysql para serializar (datos)?
- 19. Entity Framework: cómo obtener el tipo de datos de columna de base de datos de metadatos
- 20. Dos propietarios de la misma base de datos PostgreSQL
- 21. ¿Cómo cambiar el propietario de la base de datos PostgreSql?
- 22. Cómo convertir el tipo de columna de varchar a la fecha en PostgreSQL?
- 23. Postgresql - rendimiento del uso de una matriz en la base de datos grande
- 24. Prueba de base de datos en python, postgresql
- 25. Actualizar tabla de base de datos PostgreSQL MUY GRANDE eficientemente
- 26. Ajuste del comentario de la columna a la de otra columna en PostgreSQL
- 27. MySQL tipo de datos base de datos de
- 28. PostgreSQL: Suelta la base de datos pero DB sigue ahí
- 29. Copiando la base de datos PostgreSQL a otro servidor
- 30. Determinar el tipo de datos de una columna en SQLite
Tenga en cuenta que las cremalleras para diferentes países se ven diferentes. Si el esquema del OP tiene códigos no estadounidenses, entonces no puede usar dicho patrón. – DrColossos
soy n00b en PostgreSQL, y CREAR DOMINIO es lo mismo con CREATE TABLE ?, –
No. Usted define un dominio, y luego puede usar "zipcode" en lugar de varchar (10). Definitivamente define un nuevo tipo de datos, que trae su propia validación. – Daniel