首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么SQL Server CE不支持varchar?

为什么SQL Server CE不支持varchar?
EN

Stack Overflow用户
提问于 2009-02-23 10:51:01
回答 2查看 7.6K关注 0票数 16

我在SQL Server CE中创建了一个表,发现它不支持varchar。

通过查找,我发现“不支持非Unicode文本列(varchar、char、text)和smallmoney;尽管支持nvarchar、nchar、ntext和money”作为stated at MSDN

这是真的吗?这到底是为什么呢?看起来一个紧凑的数据库应该支持占用较少字节来存储的数据类型……我假设它需要更多的空间来保存Unicode字符。

这背后的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-23 10:57:05

这可能是因为Windows CE完全基于Unicode,并且它的所有字符串都是以这种方式存储的。

票数 11
EN

Stack Overflow用户

发布于 2009-05-16 05:46:09

我认为他们是在试图减少部署占用的空间并简化界面。这可能是为了避免部署更多版本的DLL (unicode与非unicode版本)。

是的,它们确实只支持Unicode。

但这并不意味着它需要2个字节来存储。您可以在数据库层对其进行编码,基本上在不需要的时候剥离第一个字节。许多数据库引擎将此作为Unicode上的一种压缩方式。

这只是意味着,任何使用双字节集合的条目都会有一个额外的标记来告诉引擎该序列使用了两个字节。否则,单个字节仍然可以存储到磁盘,并作为RowData读取的一部分展开。

大多数紧凑数据库在实际将字节放到磁盘上以节省空间时,总是使用游程长度压缩的形式。当它从引擎出来时,你碰巧看到的格式很少与实际存储在磁盘上的格式相匹配。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/577209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档