我正在使用 SQL Server 2008
我有一个名为varEnteredValue
datatype的列sql_Variant
。
当我执行以下选择语句时,我什么也没得到
SELECT * FROM tblname WHERE varEnteredValue = 1
请注意,我在此列中有许多值为 1 的值
问题
我该如何解决这个问题?我需要转换数据类型吗?
我正在使用 SQL Server 2008
我有一个名为varEnteredValue
datatype的列sql_Variant
。
当我执行以下选择语句时,我什么也没得到
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
?