当前位置:  开发笔记 > 数据库 > 正文

为什么SQL Server CE不支持varchar?

如何解决《为什么SQLServerCE不支持varchar?》经验,为你挑选了2个好方法。

我在SQL Server CE中创建了一个表,并意识到它不支持varchar.

仔细研究一下,我发现"不支持非Unicode文本列(varchar,char,text)和smallmoney;虽然支持nvarchar,nchar,ntext和money",如MSDN所述.

这是真的?这究竟是为什么?似乎一个紧凑的数据库将支持需要较少字节存储的数据类型......我假设它需要更多空间来保存Unicode字符.

这背后的原因是什么?



1> Steven Robbi..:

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



2> Jason Short..:

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

是的,他们只支持Unicode.

但这并不意味着它需要2个字节来存储.您可以在数据库层对其进行编码,以便在不需要时基本上剥离第一个字节.许多数据库引擎都是在Unicode上进行压缩的方法.

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

大多数紧凑型数据库在实际将字节放入磁盘时总是使用一种运行长度压缩形式,以节省空间.您从引擎中发现它时遇到的格式很少与实际存储在磁盘上的格式相匹配.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有