Sql server 图像和文本数据应使用哪种SQL Server 2008数据类型?

Sql server 图像和文本数据应使用哪种SQL Server 2008数据类型?,sql-server,database,types,Sql Server,Database,Types,我在SQLServer中有一个表,其中一个字段需要非常复杂的数据;有时它会收到一个文本值,比如说为了论证: ASCII ART PICTURE OF A CAT WITH A POORLY SPELT CAPTION 然后,有时它会包含一个实际的JPEG,其中包含的猫的图像拼写很差的标题。在此实例中使用的最佳数据类型是什么?一个又大又长的物体 我们可以假设ASCII艺术图片相当小,比如说16个字符x 16个字符。您可以将它们存储在VARCHAR(256)字段中,至少如果不是人们发送的那些讨厌

我在SQLServer中有一个表,其中一个字段需要非常复杂的数据;有时它会收到一个文本值,比如说为了论证:

 ASCII ART PICTURE OF A CAT WITH A POORLY SPELT CAPTION
然后,有时它会包含一个实际的JPEG,其中包含的猫的图像拼写很差的标题。在此实例中使用的最佳数据类型是什么?一个又大又长的物体

我们可以假设ASCII艺术图片相当小,比如说16个字符x 16个字符。您可以将它们存储在VARCHAR(256)字段中,至少如果不是人们发送的那些讨厌的2MB大JPEG的话

附加位 从语义上讲,我们可以说这两种图像都是猫的图像,尽管格式非常不同。我想我要问的问题是,是否有一个合适的数据类型来处理语义相同但形式可能非常不同的值

附加位#2 在这种情况下,关于我们的猫的数据量变化很大。有时,cat字幕图像非常小,我们只需要存储约256字节的信息。但有时它非常大,如果它是一个纯文本ASCII cat图像,它可能会占用约256megabytes,但我们可以将它放入JPEG,它只占用2Mgabytes。耶,摩尔猫的图像可以存储在我们的硬盘上!但很自然地,我不想把这些256字节的ASCII图像转换成2M字节的JPEG,因为那样我就无法在硬盘上放那么多猫的图片了

如果有这样的建议-我不能为那些2MB JPEG创建新格式,输出将始终为2MB,以便与传统的第三方闭源cat字幕生成器兼容。这就产生了令人难以置信的令人敬畏的标题,重写它是一项艰巨的任务,并且超出了正在编写的软件的范围

注:如果你感兴趣的话,现实生活中的实际用例与来自基因分析机器的数据有关,但我更希望这个问题是关于猫图片的更一般的用例。这就是互联网和一切

附加位#3 我们可以说数据库结构看起来有点像

MyCatContent
    idCatContent INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    catContentType INT NOT NULL REFERENCES CatContentType (catContentType),
    content {whatSortOfFieldIsThis?}

CatContentType
    catContentType INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    description VARCHAR(20) NOT NULL

使用VARBINARY(MAX),这应该包括所有的基。对于二进制图像,使用VARBINARY?老实说,这听起来好像不应该存储在数据库中,或者至少不应该存储在与短文本项相同的字段中。在列中存储文本和文件是一个非常糟糕的设计选择。你会在同一列中存储地址和pdf吗?它们是不同的东西,需要相应地处理。我认为称之为“错误的选择”是一种草率的概括。将图像或文件作为二进制数据存储在数据库中有几个优点。由数据库而不是数据库和文件系统决定的安全性、备份、复制的简单性、所有更改都记录下来等等。这当然是一个有一些重要注意事项的选择,但普遍将其贬为“坏”未免太过分了。微软在这个问题上有一个很好的解释。我想你有一个鉴别器列,例如“originalFileName”或“content type”或类似的?