将图像和文本存储在SQL Server的单个列中

时间:2018-03-29 07:26:18

标签: sql sql-server image varbinary

我想创建引用表,以存储键值对。

Id
Key
Value

事情是,我需要将文本和图像存储为值,哪种数据类型应该更好。大多数案例ppl参考Varbinary。但我需要知道哪一个是最好的。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果只将它们存储为单独的字段列,该怎么办?

Id bigint, Key varchar(50), ValueBlob varbinary(max),ValueString varchar(max)

答案 1 :(得分:1)

除非您将图像编码为base 64

,否则必须使用varbinary(max)
  

Base64是一组类似的二进制文本编码方案,以ASCII字符串格式表示二进制数据

如果你不能/不会,你需要将文本数据转换为varbinary(max)

这回答了你的实际问题,但没有解决你的问题

  • 您如何知道列中存储的类型?
    您需要一个额外的列来存储“类型”
  • 您是否打算在数据库中搜索/导出存储在varbinary中的文本?
    许多额外工作

键值表结构表明EAV设计带来了许多其他问题。

正确的解决方案:

  • 每种数据类型的单独表格
  • 单独的varchar和varbinary列