En este post vamos a hablar sobre cómo guardar números telefónicos, teléfonos o números de teléfono en las bases de datos, enfocándonos en el tipo de dato.
Esto va a responder a la pregunta de ¿Cuál tipo de dato usar para guardar números de teléfono?.
Lo expuesto aquí es mi opinión y sugerencia, pero al final puedes hacer lo que gustes. Aunque la respuesta parezca obvia, he visto que varios usuarios preguntan esto y por eso he decidido hacer este post.
Tipo de dato para guardar teléfonos
No importa si trabajas con MySQL, SQLServer, SQLite, PostgreSQL o cualquier otro. Al final llegarás a la pregunta del tipo de dato.
Como principiantes podemos pensar que el tipo de dato para un teléfono puede ser el entero, pero esto no sería lo correcto.
En resumen, yo recomiendo guardarlos como texto (varchar, texto, o lo que sea el equivalente a la cadena en tu gestor) ya que no es necesario guardarlos como enteros.
¿Por qué no usar enteros?
No es malo usarlos para guardar teléfonos, pero no tiene caso guardarlos así y en ocasiones podemos cometer algunos errores.
El tipo de dato entero existe para guardar números (qué sorpresa) y luego hacer algo con ellos. Por ejemplo, sacar promedios, mínimos, sumas, máximos, etcétera.
En el caso de los números telefónicos no necesitamos sumarlos o hacer alguna operación con ellos.
Distintos formatos
Los teléfonos no siempre se conforman de números. Algunos usuarios los pueden escribir con espacios o guiones. También pueden escribirlos empezando con 0 o con signos.
Posible desbordamiento
Cuando elegimos el tipo de dato entero podemos causar desbordamientos y errores de rango. Por ejemplo, en MySQL el tipo de dato INT solo soporta hasta el número 2147483647
y si ingresas algo mayor a eso, será truncado a 2147483647.
Entonces si un usuario ingresa, por ejemplo, el número 2147483648
el mismo será reiniciado a 2147483647. Y eso pasará con todos los números mayores al límite.
Nota: también existe el tipo de dato BIGINT que soporta números mucho más grandes.
Esto es un simple ejemplo muy específico, pero solo es por mencionar algunas cosas que pueden pasar.