我有一个SQL Server数据库,但是我改变了主意,而不是将表中的列设置为int
,而是想将其更改为varchar
。因此,我将类型更改为varchar(8)
,并将所做的更改保存在SQL Server Management Studio工具(V17.0)中。
当我保存更改时,该工具似乎将int值转换为varchars。我想将“ 1”的值更改为“外部”,将“ 2”的值更改为“ SPTR”,将“ 3”的值更改为“其他”。我要一次做一个价值。
这是我尝试过的简单SQL语句:
UPDATE mytable
SET mycolumn = 'External'
WHERE mycolumn = '1'
我从SSMS收到的错误消息是
将varchar值“外部”转换为数据类型int时转换失败”
好像数据库认为类型是int
,但不是,它是varchar(8)
。
答案 0 :(得分:0)
ALTER TABLE mytable ALTER COLUMN mycolumn varchar(50);
SELECT DATALENGTH ('External')
返回8
只要我知道varchar不会全部使用50个字节,在您的情况下就只使用8个字节来存储“外部”字段,为什么不尝试更改表大小。