【发布时间】:2019-09-05 06:42:17
【问题描述】:
我想知道是否可以将 VARBINARY(MAX) 值转换回原始值。
原始值可以是任何受支持的 SQL 类型(文本、数字和浮点),也可以是 (.NET) 类型 UInt16、Uint32、UInt64 或 SByte。
SQL Server 不支持这些类型,因此
SELECT CAST([BinaryData] AS UINT) from [Data]在这里不起作用,因为这些类型未知?
现在我正在我的 C# 程序中进行这种转换,但我认为如果可以在 SQL Server 端完成它会更好。这样我也可以在 SQL 服务器上而不是在 .NET 程序中进行更多的计算。
有什么建议或解决方案吗?
【问题讨论】:
-
我认为你需要进一步解释你的问题的大局以获得有意义的建议。我的意思是,如果原始值不是 varbinary,为什么要存储为 varbinary 值?当你说原始值时,你怎么知道原始值的数据类型是什么?当然,您只能在 SQL Server 中转换为 SQL Server 支持的数据类型,因此您要么使用有效的 SQL Server 类型,要么在代码中进行。但在我看来,设计是错误的。
-
您是否也将源类型与二进制数据一起存储?
-
@DaleBurrell 这是一个大数据记录应用程序。客户希望每个值(无论类型)都在同一列中,因此我们在代码中将每个值转换为 VARBINARY 并将它们插入数据库中(不能使用 REAL,因为插入了字符串)。
-
@SalmanA 类型与数据一起存储,所以我知道我必须做什么转换(在 C# 代码中)
-
您已经知道您无法转换为 .net 类型...那么您在寻找什么答案?
标签: .net sql-server casting type-conversion