char データ型の列として別のソースからインポートされたテーブルがありますが、フィールドには国際文字が含まれています。テーブルで nvarcvhar を使用したいと思います。どうすればこれを達成できますか?
既に列を更新しようとしましたが (alter table ステートメントまたは "cast as" を使用)、保存された情報は変換されませんでした。
ありがとう
char データ型の列として別のソースからインポートされたテーブルがありますが、フィールドには国際文字が含まれています。テーブルで nvarcvhar を使用したいと思います。どうすればこれを達成できますか?
既に列を更新しようとしましたが (alter table ステートメントまたは "cast as" を使用)、保存された情報は変換されませんでした。
ありがとう
このような
ALTER TABLE TableName ALTER COLUMN ColumnName NVARCHAR(size)
例
CREATE TABLE test (bla VARCHAR(50))
GO
ALTER TABLE test ALTER COLUMN bla NVARCHAR(50)
挿入を行うときは、文字列の前に必ずNを付けてください
INSERT test VALUES (N'漢語')
SELECT * FROM test
出力
bla
--------------------------------------------------
漢語
(1 row(s) affected)
何をするにしても、SSMSデザイナー/ウィザードを使用しないでください。テーブル全体が再作成されます。たとえば、ここを参照してください。列のデータ型を変更する場合は、ALTER TABLE TableName ALTER列構文を使用し、列を削除して再作成しないでください。
alter table your_table alter column your_column nvarchar(length)
あなたのデータは現在 EUC-CN にあり、CP1252 として偽装されています。失われることはありません。
Unicode への変換にはいくつかの方法があります (概要については、SQL データベースの変換セクションを参照してください) 。SQL Server の場合、EUC-CN から Unicode への変換用の拡張ストアド プロシージャを作成できます。これは機能しますが、簡単ではありません (この場合、データにコード ページ 51936 を使用します)。
運が良ければ、データに含まれる特定の文字と、インストールされている言語パックによっては、次のようにコード ページ 936 からのように変換できる場合があります。
ALTER DATABASE mydatabasename COLLATE Chinese_PRC
これが成功した場合は、変換するすべての列に対して同じことを行います。
ALTER TABLE mytablename ALTER COLUMN mycolumnname
varchar(4000) COLLATE Chinese_PRC NOT NULL
そして、それらを NVARCHAR に変換します。