You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Microsoft SQL Server Management Studio 2014数据表更新及数字输入问题咨询

嗨,我来帮你解决这两个SQL Server 2014里的常见问题,都是日常操作中很容易碰到的,别担心!

解决SQL Server 2014中的两个数据表操作问题

一、给已创建的表添加手机号字段

不管是用图形界面还是T-SQL命令,都能轻松搞定,两种方法我都给你列出来:

方法1:通过SSMS图形界面操作

  1. 打开SQL Server Management Studio 2014,连接到你的数据库实例
  2. 在左侧“对象资源管理器”里找到目标数据库,展开后定位到需要修改的表
  3. 右键点击该表,选择设计(Design)
  4. 在设计界面的最后一行空白处,输入字段名(比如手机号),然后在“数据类型”下拉框里选VARCHAR(11)——如果需要支持带国际区号的号码,可以设成VARCHAR(20)
  5. 因为表中已经有数据,默认要保持“允许空”列的勾选(否则会因为现有行没有值导致保存失败);如果之后要把这个字段设为必填,可以先添加字段并允许为空,补全已有行的手机号后,再取消“允许空”的勾选
  6. 点击工具栏的“保存”按钮(或按Ctrl+S),确认修改即可

方法2:用T-SQL命令执行

打开SSMS的“新建查询”窗口,输入以下语句(记得替换成你的表名和字段名):

-- 先添加允许为空的手机号字段
ALTER TABLE 你的表名
ADD 手机号 VARCHAR(11) NULL;

-- 等所有已有行都填入手机号后,再设置为必填(可选)
ALTER TABLE 你的表名
ALTER COLUMN 手机号 VARCHAR(11) NOT NULL;

执行完成后,刷新表就能看到新添加的字段了。

二、添加超过11位的数字时持续报错的解决办法

这个问题的核心是选错了数据类型,我给你拆解原因和对应解决方案:

为什么会报错?

SQL Server里的INT类型最大只能存储2147483647(也就是10位数字),超过这个范围就会触发溢出错误。要存11位及以上的数字,得选合适的类型:

解决方案分两种场景:

场景1:这个“数字”不需要做算术运算(比如手机号、身份证号、银行卡号)

这种情况强烈推荐用字符类型VARCHARCHAR),因为这类数据本质是字符串标识,用数字类型会丢失前导零,而且完全没必要用数字存储。比如要存15位的标识号:

ALTER TABLE 你的表名
ADD 超长标识号 VARCHAR(20) NULL;

VARCHAR(20)是为了留足余量,避免后续长度不够。

场景2:这个“数字”需要做算术运算(比如大额金额、统计数值)

如果是要存真正的大数(比如12位的金额、15位的统计数),可以用BIGINT或者DECIMAL

  • BIGINT:最大能存9223372036854775807(19位整数),适合整数类型的大数
  • DECIMAL(p,s)p代表总位数,s代表小数位数,比如要存20位整数可以用DECIMAL(20,0)

示例代码:

-- 添加BIGINT类型的整数字段
ALTER TABLE 你的表名
ADD 大整数值 BIGINT NULL;

-- 添加DECIMAL类型的数值字段(示例:20位整数,0位小数)
ALTER TABLE 你的表名
ADD 大数值 DECIMAL(20,0) NULL;

按照上面的方法操作,就不会再出现报错啦。

内容的提问来源于stack exchange,提问作者cole Mathy T

火山引擎 最新活动