1

char データ型の列として別のソースからインポートされたテーブルがありますが、フィールドには国際文字が含まれています。テーブルで nvarcvhar を使用したいと思います。どうすればこれを達成できますか?

既に列を更新しようとしましたが (alter table ステートメントまたは "cast as" を使用)、保存された情報は変換されませんでした。

ありがとう

4

3 に答える 3

4

このような

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列構文を使用し、列を削除して再作成しないでください。

于 2012-05-04T15:23:29.893 に答える
2
alter table your_table alter column your_column nvarchar(length)

SQLFiddleの例

于 2012-05-04T15:23:42.103 に答える
0

あなたのデータは現在 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 に変換します。

于 2012-05-04T22:13:08.507 に答える