SQL Server, данные varchar для данных nvarchar - PullRequest
1 голос
/ 10 мая 2010

У меня есть база данных с сопоставлением Danish_Norwegian_CS_AS и множеством столбцов varchar. Я хотел бы преобразовать все эти данные в Unicode, но пока не нашел способа конвертировать эти данные. Если я правильно понял, используется кодировка UCS-2 с прямым порядком байтов.

Например, у меня есть столбец, содержащий 'PÃ ¥ l-Trygve', который легко конвертируется с помощью C # в 'Pål-Trygve' с помощью Encoding.Default.GetString (Encoding.UTF8.GetBytes ("PÃ ¥ l-Trygve «));

Есть ли способ сделать это преобразование в клиенте Microsoft SQL Server?

Ответы [ 3 ]

0 голосов
/ 11 мая 2010

Если на сервере sql поставить символ N перед вашим любимым оператором, он преобразуется в Unicode. например:

update mytable
set mycol = N'PÃ¥l-Trygve'

или

insert into mytable
values (N'PÃ¥l-Trygve',...)
0 голосов
/ 16 мая 2010

В своем комментарии к ответу Сэма вы сказали, что «данные в столбце varchar - это двоичный код для строки с прямым порядком байтов ucs2, а не ascii». Что отличается от того, что сказано в вопросе, где у вас есть текст.

Итак, я бы создал целый набор параллельных таблиц (со столбцами nvarchar) и загрузил их через некоторый код на c #. Затем удалите, переименуйте и т. Д. Это не то, что легко сделать в t-sql

0 голосов
/ 10 мая 2010

Не могли бы вы просто использовать оператор CONVERT - или я здесь упускаю нюанс?

С http://msdn.microsoft.com/en-us/library/ms187928.aspx

...