需要TRUNCATE数据

时间:2014-12-02 22:58:13

标签: sql sql-server-2008-r2

UPDATE SOP60300
SET SOP60300.CUSTITEMDESC = IV00101.ITEMDESC
FROM IV00101
WHERE IV00101.ITEMNMBR = SOP60300.ITEMNMBR

我需要从项目描述中更新客户描述。当我运行上面的脚本时,它给出了下面的错误消息。客户描述可以容纳的MAX是CHAR 51,项目描述是CHAR 101.我只想切断最后50个CHAR,这样语句就会运行。

应该注意我使用的是SQL Server 2008R2

  

Msg 8152,Level 16,State 14,Line 2
  字符串或二进制数据将被截断。

2 个答案:

答案 0 :(得分:0)

您也可以使用LEFT。它相当于SUBSTRING(colName, 1, 1)LEFT返回具有指定字符数的字符串的左侧部分。

SET SOP60300.CUSTITEMDESC = LEFT(IV00101.ITEMDESC, 50)

因此它从列的值中获取前50个字符。

我喜欢LEFT,因为我发现它有点清洁,但实际上,无论如何都没有区别。

SQL SERVER 2008中的SQL小提琴: - http://sqlfiddle.com/#!3/ad609/1

答案 1 :(得分:-1)

SET SOP60300.CUSTITEMDESC = substring(IV00101.ITEMDESC,1,50)
那样的...... (注意保持更新的其余部分相同)