数据应适合时截断警告

时间:2014-10-10 16:26:47

标签: sql sql-server

我们正在使用B列中的确切值更新A列.B列的长度为255,A列为4. B列中的数据已经由LEN(REVERSE(colB))验证为仅为4。当我们尝试更新错误消息时说:

'String or binary data would be truncated.'

这是查询:

update table 
set columnA=columnB  
where Column B in ('ABC','ABCD','AB')

我们也确认这有效:

update table 
set columnA=left(columnB,4)  
where Column B in ('ABC','ABCD','AB')

任何可能出错的猜测? 感谢

3 个答案:

答案 0 :(得分:0)

可能是您对B列使用char(非varchar)数据类型,在这种情况下,您的数据库引擎可能会考虑列的宽度,而不管其宽度如何数据。然后trim函数可以消除错误。

答案 1 :(得分:-1)

SQL不检查字符串的实际长度 - 它只是检测到字符串值COULD溢出新容器并给出错误消息。试试这个:

更新表集ColumnA =(从表中的ColumnB中选择LEFT(ColumnB,4)('ABC','ABCD','AB'));

这只选择columnB中数据的前四个字符。

答案 2 :(得分:-1)

这个查询有效。我很好。

更新表 set columnA = columnB
其中B列(' ABC',' ABCD'' AB')和len(columnb)< = 4

我仍然很好奇为什么