【问题标题】:Store both Image and Text in single column in SQL Server将图像和文本存储在 SQL Server 的单列中
【发布时间】:2018-03-29 07:26:17
【问题描述】:

我想创建一个引用表来存储键值对。

Id
Key
Value

问题是,我需要将文本和图像都存储为值,哪种数据类型应该更好。大多数情况下,请参考Varbinary。但我需要知道哪个是最好的。

谢谢!

【问题讨论】:

    标签: sql sql-server image varbinary


    【解决方案1】:

    如果只是将它们存储为单独的 fields 列会怎样?

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

    【讨论】:

    • ,而不是字段。
    • 谢谢,我已将其更新为位列作为标志以识别文本和图像。
    【解决方案2】:

    您必须使用varbinary(max),除非您将图像编码为base 64

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

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

    这回答了你的实际问题,但不能解决你的问题

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

    键值表结构暗示了一种 EAV 设计,它带来了许多其他问题。

    正确的解决方案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2013-06-07
      • 2011-01-25
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多