截断SQL varchar列

截断SQL varchar列,sql,sql-server,Sql,Sql Server,我目前有一列varchar(3000)。我想把它减少到400个字符 执行此查询时: ALTER TABLE [dbo].[App] ALTER COLUMN SpecialInstructions VARCHAR(400) NOT NULL 我得到这个错误: Msg 8152,第16级,第14状态,第1行 字符串或二进制数据将被截断 如何设置该列中先前的数据将被截断的位置?我使用的是开发数据库,所以如果我丢失了信息也没关系。还是有更好的方法?提前谢谢 update [dbo].[App] se

我目前有一列
varchar(3000)
。我想把它减少到400个字符

执行此查询时:

ALTER TABLE [dbo].[App]
ALTER COLUMN SpecialInstructions VARCHAR(400) NOT NULL
我得到这个错误:

Msg 8152,第16级,第14状态,第1行
字符串或二进制数据将被截断

如何设置该列中先前的数据将被截断的位置?我使用的是开发数据库,所以如果我丢失了信息也没关系。还是有更好的方法?提前谢谢

update [dbo].[App]
set  SpecialInstructions = left(SpecialInstructions, 400)
您可以选择添加
WHERE
子句,以确保只缩短过长的值:

where len(SpecialInstructions) > 400
这是为了减少更新的行数。使事务更小,包括写入集

您可以选择添加
WHERE
子句,以确保只缩短过长的值:

where len(SpecialInstructions) > 400

这是为了减少更新的行数。使事务更小,包括写入集。

其中LEN(SpecialInstructions)>400
@lad2025,
LEN
不计算尾随空格。在此处使用
DATALEGNTH
其中LEN(SpecialInstructions)>400
@lad2025,
LEN
不计算尾随空格。在此处使用
DATALEGNTH