SQL语句更改where子句中与该列相同的列的值

时间:2019-03-11 21:09:58

标签: sql sql-server

我有一个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)

1 个答案:

答案 0 :(得分:0)

ALTER TABLE mytable ALTER COLUMN mycolumn varchar(50);

SELECT DATALENGTH ('External')

返回8

只要我知道varchar不会全部使用50个字节,在您的情况下就只使用8个字节来存储“外部”字段,为什么不尝试更改表大小。