Определить содержание варчара в колонках 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. Вы счастливы сделать это в коде? Если это так, вы можете получить все записи, затем перебрать все символы в строке и проверить. Но человек это медленный путь.