2013-05-10 3 views
1

Окружающая среда - SQL Server 2012. Я собираюсь изменить возвращаемый столбец результата clr с varchar на nvarchar, но я не уверен, будут ли символы, которые могут быть найдены на кодовой странице varchar всегда конвертировать в один и тот же символ в unicode, а также в другую сторону. Плохой пример: если кто-то получит результаты из процедуры с столбцом nvarchar и поместит это в базу данных с колонкой varchar. Вопрос в том, будут ли они правильно конвертировать?VarChar для NVarChar и обратно

ответ

2

VARCHAR относится к вашей системе кодовых страниц. NVARCHAR содержит символы Unicode. Unicode всегда будет надмножеством любой устаревшей кодовой страницы. Таким образом, вы можете ожидать, что ваши преобразования из VARCHAR -> NVARCHAR будут правильно отображены. Однако, если ваша строка NVARCHAR позже содержит символы Unicode, которые не найдены в вашей устаревшей кодовой странице, символы будут потеряны при обращении к VARCHAR.

Если возможно, вам следует избегать такого преобразования. Обновите столбец таблицы до NVARCHAR.

+0

Да, это то, что я хотел услышать. Я так и думал, но хотел услышать мнение. Дело в том, что в этой процедуре может быть логика, но это ошибка для неправильной работы с nvarchar. Эта процедура предназначена для преобразования строки csv в отношение, но на входе также могут быть только символы Unicode, и это преобразование необходимо. Вот что. –

Смежные вопросы