更新未按预期工作

时间:2014-09-18 11:28:16

标签: sql tsql sql-server-2008-r2

在我们的表中,我们有一个长度为nvarchar(70)的字段,用于存储可以使用SUBSTRING查询的多个值。该字段中已有54个字符,包括最终引用。

字段的开头和结尾字符始终是单引号。

我需要更新该字段,从另一个参考表中添加最多3个字符。我尝试了下面的内容,但是当数字大于9时,它缺少最后一个字符。

update Hermes_Rep.dbo.ActData
set spare6= LEFT(Spare6+space(56),55) + 
    isnull(YAR.YARPEP,' ') + isnull(cast(YAR.YARSCOR as nvarchar(2)),'  ')
    + '''' 
FROM Hermes_Rep.dbo.ACTdata 
LEFT JOIN KFILDTO_YARPF YAR ON ACTdata.ACNo COLLATE Latin1_General_CI_AS= YAR.YARCUS COLLATE Latin1_General_CI_AS
WHERE DataDate= @ProcessDate 

例如,如果我添加的数据是N9',那么它可以正常工作,但如果数据是N11',那么它只会输入N1那么我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明问题是由LEFT函数截断字段引起的:

LEFT(Spare6+space(56),55) 

所以我把它改成了

LEFT(Spare6+space(57),57) 

现在可行。