Определить содержание варчара в колонках nvarchar

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

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

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

ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)

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

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам