Вопрос

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

Я хочу выполнить преобразование, потому что данные статичны (они не изменятся в будущем), а столбцы проиндексированы и выиграют от меньшего индекса (varchar) по сравнению с фактическим индексом (nvarchar).

Если я просто скажу

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)

тогда я не получу сообщение об ошибке или предупреждение.Данные в Юникоде будут усечены / потеряны.

Как мне проверить?

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

Решение

Почему бы не выполнить приведение туда и обратно, чтобы посмотреть, какие данные будут потеряны?

Предполагается, что для начала используется столбец nvarchar(200)

SELECT *
FROM TableName
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200))

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

Хммм, интересно.

Я не уверен, что вы можете сделать это в самом SQL-запросе.Вы рады сделать это в коде?Если это так, вы можете получить все записи, затем перебрать все символы в строке и проверить.Но, черт возьми, это медленный путь.

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