为什么MySQL数据库中的电话号码被截断

 怦然欣动and败 发布于 2023-02-13 14:56

我在mySQL中创建了一个数据库表,其中两个列名是"landPhone"和"mobilePhone"来存储电话号码(格式为:123-456-8000表示陆地,098-765-6601表示移动电话).这两列的数据类型设置为VARCHAR(30).数据已插入表中.但在SQL查询后,我发现电话号码已被截断.它显示(例如,上面两个数据)只有landPhone的前三个数字(123),并且在移除mobilePhone的前导'0'(98)后只显示前两个数字.

为什么会这样?

2 个回答
  • 电话号码实际上不是数字 ; 它们是碰巧包含数字的字符串(在您的情况下,是破折号).如果您尝试将其解释为数字,通常会发生两件事:

    领先的零被遗忘了.

    从第一个非数字到字符串末尾的所有内容都被删除.

    这听起来就像你描述的结果.即使您最终将结果填充到字符串字段中,也为时已晚 - 数据已经损坏.

    确保在此过程中的任何时候都不将电话号码视为整数.

    2023-02-13 14:58 回答
  • 你必须使用

    insert into sample values('123-456-8000', '098-765-6601' )
    

    代替

    insert into sample values(123-456-8000, 098-765-6601 )
    

    看到这个SQLFiddle.

    2023-02-13 14:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有