2月 7, 2022
Sql–server-Nvarcharからvarcharからnvarchar文字への変換
いいえ、データが存在しなくなったため、データを”修正”する方法はありません。 VARCHAR
に変換すると、各文字の基になる値が?
のASCII値に変更されました。 これは表示上の問題ではなく、それらの文字は物理的に通常の疑問符になりました。 残念ながら、バックアップから復元を行う必要があります。
次のコード例は、Unicode文字がVARCHAR
に変換されると(照合によって示されるコードページがその文字をサポートしていないと仮定して)、通常の’ol疑問符になり、永遠にその:
DECLARE @Character NCHAR(1) = NCHAR(0x3525);SELECT @Character AS , UNICODE(@Character) AS , ASCII(@Character) AS , UNICODE(CONVERT(VARCHAR(5), @Character)) AS , UNICODE(CONVERT(NVARCHAR(5), CONVERT(VARCHAR(5), @Character))) AS , ASCII('?') AS , UNICODE(N'?') AS ;-- 㔥 13605 63 63 63 63 63
次の例は、(少なくとも現時点では)ほとんどのフォントでサポートされることが非常に疑わしいUnicode文字のインスタンスを示しているため、正方形のボッ:
SELECT NCHAR(0xABBF), N'ꮿ', UNICODE(N'ꮿ');-- ꮿ ꮿ 43967
実際の文字はここで見ることができます:チェロキー小文字YA U+ABBF。 これは表示上の問題であり、さまざまなフォントで表現されていない多くの文字は、文字の実際の値を変更することなく同じ方法で表示されますが、