2

我们在一些 SQL Server 2005 表中使用计算列,这些表总是返回特定类型的数据(位、varchar(50) 等...)。

这些表由使用强类型数据集和表适配器的 .NET 数据层使用,但是由于计算的列不受特定类型的限制(我们总是返回特定类型,但我们可以返回任何内容).NET 不会强生成类型的列。

这里有三个问题: - 计算列通常检查相关记录是否具有特定值,或者它们使用 XPath 从相关 XML 文档返回单个值。计算列是否是适合此问题的工具,还是有更好的方法来返回这些相关数据?

  • 我的搜索说不,但是否可以在数据库本身对这些列进行强类型化?

  • Visual Studio DataSet 设计器内部是否有一种解决方法,可以让我设置正确的类型并在 DataSet/TableAdapter 更新中维护它们(因为设计器将查询数据库以更新其架构)?

谢谢!

4

2 回答 2

2

在用于返回这些值的查询中,可以使用 SQL CAST() 函数将它们转换为所需的任何数据类型。我相信 .NET 应该识别强制转换的数据类型并将该类型放入数据集中。

于 2009-04-27T15:20:10.370 回答
1

首先,它们确实有一个类型。

其次,如果客户端请求它,SQL Server 将告诉客户端类型,它是 C API 客户端、C# 客户端、JDBC 客户端等。否则,客户端无法正确识别类型。

第三,您可以通过查看计算列的 information_schema.columns(或 syscolumns)行来找出它们的类型。

第四,您可以使用 CAST 运算符将这些列强制转换为与其实际类型兼容的任何类型。

于 2009-04-27T15:56:40.033 回答