在 SQL Server 中存储混合数据的最佳列类型是什么
我们正在进行 Visual Foxpro (DBF) 到 SQL Server 的转换,但将保留 VFP GUI 以现在使用 SQL Server 数据库。
在 VFP 的几个备注字段中,我们混合存储 ASCII 字符和文本。
在无需 CAST 的情况下存储这些值的最佳列数据类型是什么?
同样,我们有时也会将 Word 文档转换为 Memo 文件,对于这些情况,SQL Server 中哪种字段类型效果最好?
感谢您的帮助。
We are doing a Visual Foxpro (DBF) to SQL Server conversion, but will retain the VFP GUI to now use the SQL Server database.
In several memo fields in VFP, we store a mix of ASCII characters and text.
What would be the best column datatype to store these values preferably without having to CAST?
Along these same lines, we also have times when we convert Word documents into a Memo file, for these, which field type in SQL Server would work the best?
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这取决于您使用的 SQL Server 版本。 2005 及更新版本支持 VARCHAR(MAX),最大可存储 2GB 的字符串。短字符串可以有效存储(在行中),而较大的字符串会自动存储在 blob 数据库区域中,并且仅指向存储在行中的 blob 的指针。从开发人员的角度来看,如果您的数据可以超过 8000 个字符,则无需担心这种复杂性,可以使用 VARCHAR(MAX)。
至于您的 Word 文件,这取决于您是否要将实际文件(二进制格式)存储在数据库中或仅存储内容。在第一种情况下,您可以使用 VARBINARY(MAX) (或将文件存储在磁盘上,并且仅将路径和其他文件元数据存储在 SQL Server 中)。如果要存储实际内容,则需要首先转换为某种合适的格式(富文本、XML 等),然后将其存储在 VARCHAR(MAX) 中。
注意:如果您的数据包含 unicode 字符(而不仅仅是 ASCII),请使用 NVARCHAR 而不是 VARCHAR
It depends on the version of SQL Server you are using. 2005 and newer support VARCHAR(MAX), which can store strings up to 2GB. Short strings are stored efficiently (in the row) while larger strings are automatically stored in a blob database area, with only a pointer to the blob stored in the row. From a developer's perspective you don't need to worry about this complexity and use VARCHAR(MAX) if your data can exceed 8000 characters.
As for your Word files, it depends if you want to store the actual file (in binary format) in the database or only the content. In the first case you could use VARBINARY(MAX) (or store the file on disk and only the path and other file meta data in SQL Server). If you want to store the actual content you will need to first convert to some suitable format (Rich Text, XML, etc.) and then store that in VARCHAR(MAX).
NOTE: use NVARCHAR instead of VARCHAR if your data contains unicode characters (rather than just ASCII)