SQLServer 2008通用列类型

时间:2009-11-04 14:53:09

标签: sql sql-server tsql

我在SqlServer上有一个表,其中列类型应该是未定义的,我的意思是,它应该能够包含任何类型的类型(string,int,boolean和datetime)。

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

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

你有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:9)

数据库设计,其中将变体类型的数据存储到列中几乎总是会回来并且后来成为主要问题。数据质量几乎总是受到影响。

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

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

咆哮(并感谢您的倾听),您可以将SQL_Variant用于您的目的。在这里阅读更多内容:

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

答案 1 :(得分:2)

听起来你想要sql_variant

答案 2 :(得分:0)

您也可以同样关注<{3>} SQL_VARIANT