插入vs更新

时间:2013-06-14 08:59:59

标签: sql-server

我有一个表,其中所有字段都声明为nvarchar。如果我在表中插入,所有unicode字符都会很好地进入字段。但是当我做更新时,我会失去一些角色。这是我的udpate声明:

UPDATE TableII
     SET    LOCATION = CAST(( COALESCE([CITY], N'') + NCHAR(13) + NCHAR(10)
                              + COALESCE([INSTALLATION], N'') + NCHAR(13)
                              + NCHAR(10) + LEFT(LOCATION.LATLONG, 2) + N'°'
                              + SUBSTRING(LOCATION.LATLONG, 3, 2) + N''''
                              + SUBSTRING(LOCATION.LATLONG, 5, 2) + NCHAR(34)
                              + N' ' + SUBSTRING(LOCATION.LATLONG, 7, 1)
                              + N' ' + SUBSTRING(LOCATION.LATLONG, 8, 3)
                              + N'°' + SUBSTRING(LOCATION.LATLONG, 11, 2)
                              + N'''' + SUBSTRING(LOCATION.LATLONG, 13, 2)
                              + NCHAR(34) + N' ' + SUBSTRING(LOCATION.LATLONG,
                                                             15, 1) ) AS NVARCHAR(MAX))
     FROM   TABLEII
            INNER JOIN LOC ON TABLEII.REC = LOC.REC
            INNER JOIN LOCATION ON LOC.LOCRECNUM = LOCATION.LOCRECNUM
     WHERE  ( LOC.LOCSEQ = '1' )

正如你所看到的,我已经尝试了各种各样的东西来强制unicode字符不会丢失,但它不起作用。

任何想法为什么插入工作正常,但此更新不?

1 个答案:

答案 0 :(得分:0)

City列是NVARCHAR吗?如果没有,COALESCE将把该列作为其数据类型并使用它,无论您对其余代码执行什么操作。