0

すべてのフィールドが nvarchar として宣言されているテーブルがあります。テーブルに挿入すると、すべてのユニコード文字がフィールドにうまく入ります。しかし、アップデートを行うと、一部の文字が失われます。これが私の更新ステートメントです:

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' )

ご覧のとおり、ユニコード文字が失われないようにさまざまなことを試みましたが、うまくいきません。

挿入が正常に機能するのに、この更新が機能しない理由はありますか?

4

1 に答える 1

0

City 列は NVARCHAR ですか? そうでない場合、残りのコードで何をするかに関係なく、COALESCE はその列をデータ型として使用します。

于 2013-06-14T09:01:03.730 に答える