【问题标题】:SQLServer 2008 generic column typeSQL Server 2008 通用列类型
【发布时间】:2009-11-05 15:39:21
【问题描述】:

我在 SqlServer 上有一个表,其中列类型应该是未定义的,我的意思是,它应该能够包含任何类型的类型(字符串、整数、布尔值和日期时间)。

这是因为我的用户应该能够为每条记录定义列的类型。过去当我遇到这个问题时,我决定将它创建为 nvachar(MAX)。当我访问该值时,我自动将字符串转换为正确的类型。 我知道这种方法会浪费大量内存并影响性能。

也许可以为每种类型创建不同的表,但我从来没有时间测试。

你有什么想法吗?

谢谢!

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    将不同类型的数据存储到列中的数据库设计几乎总是会再次出现,并成为以后的主要问题。数据质量几乎总是受到影响。

    我已经看到这会导致非原子数据(逗号分隔值)、字符串字段中格式错误的日期值、单列的多次使用以及许多其他问题。

    我建议您查看他们想要存储的内容,并使用适当规范化的表进行适当的数据库设计。

    咆哮之后(感谢您的聆听),您可以将 SQL_Variant 用于您的目的。在这里阅读更多:

    http://msdn.microsoft.com/en-us/library/ms173829.aspx

    【讨论】:

      【解决方案2】:

      听起来你想要sql_variant

      【讨论】:

        【解决方案3】:

        您也可以同样查看article 关于SQL_VARIANT

        【讨论】:

          猜你喜欢
          • 2010-12-04
          • 2011-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多