用户定义的数据类型,用于存储Int float和date

时间:2015-09-16 12:53:30

标签: sql-server user-defined-functions sql-server-2014 user-defined-types

我有一个属性,可以在某个时候使用Integer,float,Date。是否可以使用用户定义的数据类型将其存储在单个列中,还是应该为它创建单独的表?

e.g. 

<name,type,value>

<Id,int,12>
<Id2,float,12.02>
<Id3,datetime,'09-09-2015 00:00:01'>.

1 个答案:

答案 0 :(得分:0)

XML允许您向您的值添加任何元数据(实际上将其转换为字符串)。一个快速而肮脏的例子(更好的方法是使用正确的XML命名空间):

      select 'int' AS [value/@type],CAST(12 AS VARCHAR(MAX)) AS [value]
union select 'float'               ,CAST(12.05 AS VARCHAR(MAX))
union select 'date'                ,CAST({d'2015-05-01'} AS VARCHAR(MAX))
union select 'datetime'            ,CAST(GETDATE() AS VARCHAR(MAX))
for xml path(''),ROOT('root') 
/*
Result
<root>
  <value type="date">Mai  1 2015 12:00AM</value>
  <value type="datetime">Sep 16 2015  3:04PM</value>
  <value type="float">12.05</value>
  <value type="int">12</value>
</root>
*/