我在mySQL中创建了一个数据库表,其中两个列名是"landPhone"和"mobilePhone"来存储电话号码(格式为:123-456-8000表示陆地,098-765-6601表示移动电话).这两列的数据类型设置为VARCHAR(30).数据已插入表中.但在SQL查询后,我发现电话号码已被截断.它显示(例如,上面两个数据)只有landPhone的前三个数字(123),并且在移除mobilePhone的前导'0'(98)后只显示前两个数字.
为什么会这样?
电话号码实际上不是数字 ; 它们是碰巧包含数字的字符串(在您的情况下,是破折号).如果您尝试将其解释为数字,通常会发生两件事:
领先的零被遗忘了.
从第一个非数字到字符串末尾的所有内容都被删除.
这听起来就像你描述的结果.即使您最终将结果填充到字符串字段中,也为时已晚 - 数据已经损坏.
确保在此过程中的任何时候都不将电话号码视为整数.
你必须使用
insert into sample values('123-456-8000', '098-765-6601' )
代替
insert into sample values(123-456-8000, 098-765-6601 )
看到这个SQLFiddle.