[70-431] I tipi di dato varchar e nvarchar di SQL Server 2005

Per quanto io abbia promesso che mi sarei limitato con gli errata corrige dei testi Microsoft, ho appena trovato un errore nel Self-Paced Training Kit per l'esame 70-431 che merita di essere segnalato, data la sua gravità. A pagina 113 si dice che, quando si dichiara un tipo di dati char, varchar, nchar oppure nvarchar, il valore indicato tra parentesi rappresenta il numero di byte utilizzati: di conseguenza, nel caso dei tipi Unicode, il numero di caratteri effettivamente memorizzabili equivale alla metà del numero indicato, dato che in Unicode ogni carattere è rappresentato da due byte. In realtà non è così. Infatti, come si legge su MSDN (prendo il caso dei tipi di dato a lunghezza fissa):

char [ ( n ) ]  Fixed-length, non-Unicode character data with a length of n bytes.

nchar [ ( n ) ] Fixed-length Unicode character data of n characters.  

Dunque, quando si usa nchar (o, analogamente, nvarchar), quello che si specifica è il numero massimo di caratteri, non di byte. Forse l'errore è nato dal fatto che MSDN, per i tipi ANSI, parla di byte, mentre per quelli Unicode fa riferimento ai caratteri. Per essere più coerenti si potrebbe parlare di caratteri anche nel caso di char e varchar, dal momento che, in questi tipi di dato, ogni byte è espresso esattamente con un carattere.

Technorati Tags: ,

posted @ mercoledì 26 marzo 2008 11.58

Print

Comments on this entry:

# re: [70-431] I tipi di dato varchar e nvarchar di SQL Server 2005

Left by Alberto Dallagiacoma at 26/03/2008 12.37
Gravatar
L'avevo notato anch'io, e devo ammettere che c'ero quasi cascato. Fortuna che c'è MSDN... ;-)

# re: [70-431] I tipi di dato varchar e nvarchar di SQL Server 2005

Left by Omar Damiani at 26/03/2008 13.56
Gravatar
Ottima precisazione, è sempre utile semplificare e fare in modo che non si generi confusione.

# re: [70-431] I tipi di dato varchar e nvarchar di SQL Server 2005

Left by Francesco at 26/03/2008 22.19
Gravatar
Anche io ho cominciato a studiare per l'esame di certificazione, ho trovato questo link:

http://support.microsoft.com/kb/920926/en-us

Grazie per queste segnalazioni ! ;-)

# re: [70-431] I tipi di dato varchar e nvarchar di SQL Server 2005

Left by dom at 22/06/2009 20.12
Gravatar
ho un problema quando copio i dati di una tabella excel.
se il valore è numerico ma la cella è testo non mi copia il valore su sql server.
forse perchè il campo è: nvarchar(9) ??

Your comment:



 (will not be displayed)


 
 
 
Please add 1 and 4 and type the answer here:
 

Live Comment Preview:

 
«marzo»
domlunmarmergiovensab
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910