我是创造一个表在SQL服务器CE并意识到它不支持varchar。

看这个,我发现,"非Unicode文列(varchar,char、文本)和smallmoney不支持;虽然限,仅必ntext和资金支持的"为 指出在MSDN.

这是真的吗?为什么是这个,到底是什么?这似乎是一个 紧凑 数据库将支持数据的类型,采取 小字节 到店...我假设它需要更多的空间来保存Unicode符。

什么是背后的推理这个吗?

有帮助吗?

解决方案

这可能是因为Windows CE是完全基于Unicode和所有它的字符串存储的方式。

其他提示

我觉得他们试图减少其部署足迹和简化的接口。也就是说,可能试图避免具有部署的DLL的多个版本(UNICODE VS非unicode的版本)。

是的这是事实,他们只支持Unicode。

但是,这并不意味着它占用2个字节来存储。你可以编码在数据库层不需要时它基本上剥离的第一个字节。许多数据库引擎做到这一点作为双字节编码的压缩的手段。

这只是意味着那些使用两个字节的集合中的任何条目有一个额外的标记,告诉该序列使用两个字节发动机的轻微额外开销。否则单个字节仍然可以存储到磁盘,并扩大作为RowData的一部分读出。

最紧凑的数据库总是使用游程长度压缩的一种形式时,他们实际上把字节到磁盘,以节省空间。格式你碰巧看到它时,它出来,在从发动机匹配很少是什么实际存储在磁盘上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top