我正在创建一个具有 SQLVariant 数据类型的表。存储在变量列中的值可以是string、integer和/或datetime。我读到了 sqlvariant 的陷阱,但由于该列没有被索引,或者在 WHERE 子句中使用,它似乎是最好的选择。但是,我需要存储对 SqlVariant 应该从/到转换的适当数据类型的引用。
在 Microsoft .Net(我的应用程序)中,每种SQL 数据类型都有一个基础数值:
我在 TSQL 中看不到等效的系统,所以想知道在使用它时如何引用每种数据类型应该是什么。每个 TSQL 数据类型都有一个“ID”吗?
这个要求的原因是客户端将值作为 XML 传递给一个过程,该过程将值保存到表中,例如
<parameters>
<p ID="1" Value="2017-04-28" Type="?????" /> Perhaps the SqlDbType integer value from above (4), or an equivalient TSQL identifier?
<p ID="2" Value="123" Type="Integer" />
<p ID="3" Value="123.456" Type="Double" />
<p ID="4" Value="Foo Bar" Type="String" />
</parameters>
我应该只使用 .Net 中的 SqlDbType 值,还是有更好的方法?
更新
我想我可能发现了什么……
SELECT * FROM sys.types
请问system_type_id
这里是我需要的值吗?