在MySQL中,电话号码的最佳数据类型是什么,Java类型映射应该是什么?
2022-08-31 11:32:46
我正在将MySQL与Spring JDBC模板一起使用,用于我的Web应用程序。我需要存储只有数字 (10) 的电话号码。我对使用数据类型的数据类型有点困惑。
- 在MySQL中,它的首选数据类型是什么?
- Bean (POJO) 类中的 Java 数据类型应该是什么?
- 我如何用javax验证/约束长度以及只允许的数字来验证该数据类型?
我正在将MySQL与Spring JDBC模板一起使用,用于我的Web应用程序。我需要存储只有数字 (10) 的电话号码。我对使用数据类型的数据类型有点困惑。
Strings & VARCHAR。
请勿尝试将电话号码存储为实际数字。它会破坏格式,删除前面的s和其他不良的东西。0
如果您愿意,您可以将用户输入限制为仅数值,但即使在这种情况下,也可以将支持持久化数据保留为字符/字符串而不是数字。
在尝试实施任何类型的长度限制,验证或掩码(例如XXX-XXXX-XX)之前,请注意更广阔的世界以及它们的数字长度和格式有何不同。
非数字字符在电话号码中可以有效。一个典型的例子是作为国际号码开头的替代品。+
00
从评论中的对话中编辑:
在MySQL中->INT(10)不是指10位数字,它表示显示宽度为10位的整数。MySQL中INT的最大值为2147483647(如果未符号,则为4294967295)。
您可以使用 BIGINT 而不是 INT 将其存储为数字。使用 BIGINT 将比 VARCHAR(10) 每行节省 3 个字节。
如果要存储“国家+地区+数字单独”。尝试使用 VARCHAR(20)。这使您能够在需要时正确存储国际电话号码。