Determinar o conteúdo de varchar em colunas nvarchar
-
18-09-2019 - |
Pergunta
Eu tenho um monte de colunas NVARCHAR que eu suspeito conter dados perfeitamente armazenáveis ??em colunas VARCHAR. No entanto eu não posso simplesmente ir e mudar o tipo das colunas em VARCHAR e esperança para o melhor, eu preciso fazer algum tipo de verificação.
Eu quero fazer a conversão porque os dados é estático (isso não vai mudar no futuro) e as colunas são indexadas e se beneficiariam de um índice menor (varchar) em comparação com o índice atual (nvarchar).
Se eu simplesmente dizer
ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)
então eu não vai obter um erro ou um aviso. dados Unicode será truncado / perdido.
Como posso verificar?
Solução
Por que não lançar lá e para trás para ver o que os dados se perde?
Isto assume coluna é nvarchar (200) para iniciar com
SELECT *
FROM TableName
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200))
Outras dicas
Hmm interessante.
Eu não tenho certeza que você pode fazer isso em uma consulta SQL em si. Você está feliz em fazê-lo em código? Se assim for, você pode obter todos os registros, em seguida, um loop sobre todos os caracteres na string e cheque. Mas o homem é uma forma lenta.