代码之家  ›  专栏  ›  技术社区  ›  Biff MaGriff

如何将<t>强制转换为varbinary,并且仍然能够在SQL端执行转换?启示?

  •  0
  • Biff MaGriff  · 技术社区  · 16 年前

    我正在编写这个应用程序,它允许用户定义自定义测验,然后允许另一个用户回答问题。测验的每个问题都有相应的数据类型。 所有问题的回答都垂直存储在[回答]表中。 我目前使用2个字段来存储响应。

    //Response schema
    ResponseID int
    QuizPersonID int
    QuestionID int
    ChoiceID int //maps to Choice table, used for drop down lists
    ChoiceValue varbinary(MAX) //used to store a user entered value
    

    我正在使用.NET 3.5 c_SQL Server 2008。

    我想在同一个字段中存储不同的数据类型,然后在我的SQL报告过程中,我将转换为正确的数据类型。我认为这是理想的,因为我只需要检查一个字段。我还认为这可能比它的价值更麻烦。

    我认为我的其他选择是:将数据存储为数据库中的字符串(yuck),或者为我可能使用的每个数据类型都有一个列。

    所以,我想知道的是,如何用C格式化数据类型,以便在SQL中正确转换它们?在SQL中转换的性能会受到什么影响?我应该为每个数据类型创建一个完整的古怪的列吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Daniel Renshaw    16 年前

    仍然不是一个完美的解决方案,但您可能想看看 sql_variant data type 它允许你存储 同一列中的SQL Server类型。但请注意,“long”数据不受支持。

    在过去的类似情况中,我也使用过另一种方法,那就是为每种响应类型分别创建一个表以及“父”响应表。这个ASO允许您正确地关联到您的选择表。例如,您将拥有以下表格:

    • 响应
    • 梯级响应
    • 日期时间响应
    • 位响应
    • 选择响应
    • XYZ响应等

    所有类型化响应表将与响应保持可选的1-1关系,所有其他相关表将仅与父响应表相关。