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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top