Determinare il contenuto varchar in colonne nvarchar
-
18-09-2019 - |
Domanda
Ho un sacco di colonne NVARCHAR che ho il sospetto contenere dati memorizzabili perfettamente in colonne VARCHAR. Tuttavia non posso semplicemente andare e cambiare il tipo delle colonne in VARCHAR e sperare per il meglio, ho bisogno di fare una sorta di controllo.
Io voglio fare la conversione, perché i dati sono statici (non cambierà in futuro) e le colonne sono indicizzati e trarrebbe beneficio da una più piccola (varchar) Indice rispetto al (nvarchar) Indice reale.
Se dico semplicemente
ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)
quindi non voglio entrare un errore o un avvertimento. dati Unicode verranno troncati / perso.
Come faccio a controllare?
Soluzione
Perché non lanciare andata e ritorno per vedere quali dati si perde?
Questo presuppone colonna è di tipo nvarchar (200) per iniziare con
SELECT *
FROM TableName
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200))
Altri suggerimenti
Hmm interessante.
Non sono sicuro che si può fare questo in una query SQL per sé. Sei felice di farlo in codice? Se è così, è possibile ottenere tutti i record, poi un ciclo su tutti i caratteri nella stringa e controllo. Ma l'uomo è un modo lento.