Подтвердить что ты не робот

Преобразование Varchar в NVarchar?

Я знаю, что при преобразовании из nvarchar в varchar некоторые данные будут потеряны/изменены.

Однако существуют ли какие-либо риски изменения данных при преобразовании типа данных varchar в nvarchar?

4b9b3361

Ответ 1

nvarchar хранит символы юникода, которые в два раза больше символов varchar. Так что, пока ваш nvarchar по крайней мере вдвое больше длины вашего vchar, это не будет проблемой.

Преобразование другого способа может быть достигнуто, если вы не использовали никаких символов вне диапазона символов ASCII (т.е. у вас нет символов Unicode)

Короче говоря, убедитесь, что длина вашего nvarchar в два раза больше вашего наибольшего значения varchar и затем внесите изменения.


Как я, кажется, получил пару downvotes на этом (без объяснения причин), я хочу дать понять, что, когда я говорю о длине выше, я имею в виду размер, например. этот объем данных хранения требуется. Пожалуйста, обратите внимание на мой комментарий ниже, который я также буду включать здесь:

Если вы говорите об изменении длины с помощью SQL, тогда я думаю, что вы должно быть в порядке, чтобы иметь одинаковую длину. Это связано с тем, что когда вы указываете длина, которую вы делаете, на основе количества символов, а не фактически количество данных, которые хранятся

Ответ 2

По большей части два типа данных идентичны в том, как вы работать с ними в SQL Server или из приложения. разница в том, что nvarchar используется для хранения данных Unicode, что используется для хранения многоязычных данных в таблицах базы данных. Другие языки имеют расширенный набор кодов символов, которые должны быть сохранен, и этот тип данных позволяет это расширение. Если ваша база данных не будет хранить многоязычные данные, вы должны использовать varchar вместо этого. Причина этого в том, что nvarchar занимает в два раза больше много места как varchar, это из-за необходимости хранить расширенные коды символов для других языков.

(from: http://weblogs.asp.net/guys/archive/2005/01/15/353550.aspx)

Итак, nvarchar - это надмножество varchar, поэтому вы не должны терять данные при конвертировании.

Ответ 3

Из этой статьи http://searchsqlserver.techtarget.com/tip/Differences-between-varchar-and-nvarchar-in-SQL-Server

VARCHAR хранится как обычные 8-битные данные. Но строки NVARCHAR хранится в базе данных как UTF-16 - 16 бит или два байта на символ, все время - и преобразуется в любую кодовую страницу, используемую соединение с базой данных на выходе (как правило, UTF-8). Тем не менее, NVARCHAR строки имеют те же ограничения длины, что и их кузены VARCHAR - 8 000 байт. Однако, поскольку NVARCHAR используют два байта для каждого символ, то есть данный NVARCHAR может содержать только 4000 символов (не байтов).