我正在使用SQL Server 2008
我有一个名为varEnteredValue
的数据类型为sql_Variant
的列。
当我执行以下select语句时,我没有得到任何东西
SELECT * FROM tblname WHERE varEnteredValue = 1
注意我在这个列中有很多值为1的值
问题
如何解决此问题?我需要转换数据类型吗?
答案 0 :(得分:11)
这里有两个问题:
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
?