Question

Je créais une table dans SQL Server CE et réalisé qu'il ne supporte pas varchar.

Vous cherchez ça, j'ai trouvé que "non-Unicode colonnes de texte (varchar, char, texte) et smallmoney ne sont pas pris en charge, bien que nvarchar, nchar, ntext, et l'argent sont pris en charge" comme a déclaré à MSDN .

Est-ce vrai? Pourquoi est-ce, exactement? Il semblerait que compact base de données soutiendrait les types de données qui prennent moins octets pour stocker ... Je suppose qu'il faut plus d'espace pour enregistrer les caractères Unicode.

Quel est le raisonnement derrière cela?

Était-ce utile?

La solution

Il est probablement parce que Windows C'est complètement Unicode basé et l'ensemble de ses chaînes sont enregistrées de cette façon.

Autres conseils

Je pense qu'ils essaient de réduire leur empreinte de déploiement et de simplifier l'interface. Cela et d'essayer probablement pour éviter d'avoir à déployer plus de versions des DLL (unicode vs versions non-unicode).

Et oui, il est vrai qu'ils prennent en charge que Unicode.

Mais cela ne signifie pas automatiquement qu'il faut 2 octets pour stocker. Vous pouvez coder que sur la couche de base de données à bande essentiellement le premier octet quand il est pas nécessaire. De nombreux moteurs de bases de données font cela comme un moyen de compression sur Unicode.

Cela signifie simplement que toutes les entrées qui n'utilisent le jeu de deux octets ont une légère surcharge d'un marqueur supplémentaire indiquant le moteur que la séquence utilise deux octets. Sinon, un seul octet peut encore être stocké sur le disque, et étendu comme une partie de la rowData lire.

La plupart des bases de données compactes utilisent toujours une forme de compression de longueur de plage quand ils ont mis effectivement octets sur le disque afin d'économiser de l'espace. Le format que vous arrive de le voir quand il sort du moteur correspond rarement à ce qui est réellement stocké sur le disque.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top