我们正在使用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')
任何可能出错的猜测? 感谢
答案 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
我仍然很好奇为什么