我正在使用SQL Server 2008
,我希望将任何数据类型(int,float,date& time,string,files等)存储在一个表中:
create table T
(
[type] int,
[value] varbinary(max)
)
列[type]
帮助我解释存储在[value]
应用程序中的C#
列中的数据。
如何使用查询0.7
获取值高于select * from T where [type] = N and ...
的所有行(N
保证[value]
存储float
)?如果我先在0.7
应用程序中将C#
转换为二进制文件而不是将其发送到SQL Server
,我可以这样做吗?
或者我如何得到包含%cat%
的所有字符串? Full-Text Search
引擎在这种情况下有用吗?
我不想cast
个值,因为我需要大量的if
语句。
答案 0 :(得分:0)
解决了这个问题后,我明白没有解决方案。您无法将SQL Server
比较显示为float
的两个varbinary
值,例如,无需转换为浮动。
由于无法过滤存储在一个varbinary
列中的数据,因此我创建了另外四列包含SQL Server
基本数据类型的列int
,float
,{{ 1}},datetime
)。现在,每个用户数据类型都映射到nvarchar
基本类型。
现在我可以过滤任何用户类型(SQL Server
除外,但我不需要过滤图像或文件),每行只使用一个与该类型相关的列(其他行有varbinary
个值)