Вопрос

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

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

Это было полезно?

Решение

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

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

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


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

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

Другие советы

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

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

Таким образом, NVARCHAR - это суперсет VARCHAR, поэтому вы не должны терять данные при конвертации.

Из этой статьи http://searchsqlserver.techtarget.com/tip/differences-between-varcharchand-nvarchar-in-sql-server

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top