sistema registro modificar insertar imprimir eliminar con buscar java mysql phone-number digit

modificar - sistema de registro en java netbeans



¿Cuál es el mejor tipo de datos para el número de teléfono en MySQL y cuál debería ser el mapeo de tipo Java? (9)

  1. varchar
  2. Cuerda

  3. Un simple regex. Consulte: Cómo verificar si una cadena contiene solo dígitos en Java . Utilice javax.constraints.Pattern.

Estoy usando MySQL con la plantilla Spring JDBC para mi aplicación web. Necesito almacenar el número de teléfono con sólo dígitos (10). Estoy un poco confundido sobre el tipo de datos utilizando el tipo de datos.

  1. ¿Cuál es el tipo de datos preferible para él en MySQL?
  2. ¿Cuál debería ser el tipo de datos Java en clases Bean (POJO) para eso?
  3. ¿Cómo puedo validar ese tipo de datos con validaciones / restricciones javax para la longitud y también solo para dígitos permitidos?

Considere utilizar el formato E.164 . Para un soporte internacional completo, necesitarías un VARCHAR de 15 dígitos.

Consulte la recomendación de Twilio para obtener más información sobre la localización de números de teléfono.


Cuerdas & VARCHAR.

  • No intente almacenar números de teléfono como números reales. arruinará el formato, eliminará los 0 s anteriores y otras cosas indeseables.

  • Usted puede, si lo desea, restringir las entradas del usuario a valores numéricos, pero incluso en ese caso, puede mantener sus datos de respaldo como caracteres / cadenas y no como números.

  • Tenga en cuenta el mundo más amplio y cómo difieren la longitud de sus números y el formato antes de intentar implementar cualquier tipo de restricciones de longitud, validaciones o máscaras (por ejemplo, XXX-XXXX-XX).

  • Los caracteres no numéricos pueden ser válidos en números de teléfono. Un ejemplo principal es + como reemplazo de 00 al comienzo de un número internacional.

Editado desde la conversación en comentarios:

  • Es uno de los errores más grandes de la interfaz de usuario que los números de teléfono tienen algo que ver con los números. Es mucho mejor pensar y tratarlos como direcciones, está más cerca de lo que realmente son y representan que los "números" de teléfono.

En MySQL -> INT (10) no significa un número de 10 dígitos, significa un número entero con un ancho de visualización de 10 dígitos. El valor máximo para un INT en MySQL es 2147483647 (o 4294967295 si no está firmado).

Puede utilizar un BIGINT en lugar de INT para almacenarlo como un número. El uso de BIGINT le ahorrará 3 bytes por fila sobre VARCHAR (10).

Si desea almacenar "País + área + número por separado". Intente usar un VARCHAR (20). Esto le permite la capacidad de almacenar números de teléfono internacionales correctamente, en caso de que sea necesario.


En mysql: BIGINT. En java: largo.


Mi requisito es mostrar el número de teléfono de 10 dígitos en el jsp. Así que aquí está la configuración para mí.
MySQL: numeric(10)

Lado de Java:

@NumberFormat(pattern = "#") private long mobileNumber;

¡Y funcionó!


Todo se basa en su requisito. Si está desarrollando una aplicación a pequeña escala y cubre solo una región específica (público objetivo), puede elegir BIGINT para almacenar solo números, ya que VARCHAR consume más byte que BIGINT (es importante tener un uso óptimo de la memoria). pero si está desarrollando una aplicación a gran escala y apunta a usuarios globales y tiene suficientes capacidades de base de datos para almacenar datos, definitivamente puede elegir VARCHAR.


VARCHAR con una longitud de probablemente 15-20 sería suficiente y sería la mejor opción para la base de datos. Dado que probablemente requeriría varios guiones y signos más junto con sus números de teléfono.


puede usar var-char, String e int, depende de usted, si usa solo el código de país con el número de teléfono móvil del que puede usar int, si usa un formato especial para el número que el uso de String o var-char type, si use var-char, entonces debe borrar el tamaño del número y restringir del usuario.