为什么SQLServer CE不支持varchar?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我在SQLServerCE中创建了一个表,并意识到它不支持varchar。

通过查找,我发现在MSDN“不支持非Unicode文本列(varchar、char、text)和SmallMoney;尽管nvarchar、nchar、ntext和Money是支持的”,这是真的吗?这到底是为什么?似乎紧凑型数据库将支持减字节为了存储...我假设保存Unicode字符需要更多的空间。

这背后的原因是什么?

提问于
用户回答回答于

这可能是因为WindowsCE完全基于Unicode,并且所有的字符串都是这样存储的。

用户回答回答于

这可能是为了避免部署更多版本的DLL(Unicode与非Unicode版本)。他们只支持Unicode。但这并不意味着存储需要2个字节。您可以在数据库层对其进行编码,以便在不需要时基本上删除第一个字节。许多数据库引擎将此作为对Unicode进行压缩的一种方法。

任何使用两个字节集的条目都有一个额外标记的轻微开销,它告诉引擎序列使用的是两个字节。否则,仍然可以将单个字节存储到磁盘中,并作为RowData读取的一部分展开。

扫码关注云+社区