我使用SQL Server 2008SQL Server select sql_variant平等不起作用?
我有一个名为数据类型sql_Variant
的varEnteredValue
列。
当我执行以下select语句我没有得到任何
SELECT * FROM tblname WHERE varEnteredValue = 1
通知我有一个价值1个多值此列
问题
哪有我解决了这个问题?我是否需要转换数据类型?
我使用SQL Server 2008SQL Server select sql_variant平等不起作用?
我有一个名为数据类型sql_Variant
的varEnteredValue
列。
当我执行以下select语句我没有得到任何
SELECT * FROM tblname WHERE varEnteredValue = 1
通知我有一个价值1个多值此列
问题
哪有我解决了这个问题?我是否需要转换数据类型?
有两个问题在这里:
SQL_VARIANT
到INT
。INT
,并且可能难以预测SQL Server是先过滤还是先尝试转换。如果值是数字,则需要首先进行测试,为此,必须将其显式转换为字符串。这里是围绕这两个问题工作的例子:
WHERE CASE WHEN ISNUMERIC(CONVERT(VARCHAR(32), varEnteredValue)) = 1
THEN CONVERT(FLOAT, varEnteredValue) ELSE 0 END = 1;
你为什么要使用SQL_VARIANT
?
我得到以下错误:Msg 8116,Level 16,State 1,行1 参数数据类型sql_variant对于isnumeric函数的参数1无效。 – 2013-03-27 17:25:31
@Mina对不起,我应该添加2a。请尝试显式转换。 – 2013-03-27 17:28:45
现在得到此错误:Msg 245,Level 16,State 1,Line 1 将nvarchar值“3.3”转换为数据类型int时转换失败。 – 2013-03-27 17:29:08
确定吗?我不能复制:http://sqlfiddle.com/#!3/cb0da/1 - 我不会建议存储与该数据类型... – sgeddes 2013-03-27 17:23:30