我正在尝试计算Face列中0到25000之间的记录数。数据集将Face作为char(20),因此我需要在制作任何布尔表达式之前将其转换为整数。这是我的代码:
SELECT count(*)
FROM tablename
WHERE cast(face AS integer) > 0 and cast(face AS integer) <=25000;
我收到错误,说
将varchar值'0.0'转换为数据类型int时,转换失败。
Face列包含空值和“0.0”和“0.0000”
等记录我在线查看并没有找到有关如何将varchar转换为整数的任何有用信息。帮助任何人?
答案 0 :(得分:1)
如果您的列中包含小数点,则您的错误是尝试将其解释为整数:
select count(*)
from tablename
where cast(face AS float) > 0.0 and cast(face AS float) <= 25000.0
答案 1 :(得分:0)
Face
始终保证是数字吗?希望这样或任何方法都不适合你。
由于您有十进制值,最好将其投射为float
,然后进行比较:
SELECT count(*)
FROM tablename
WHERE cast(face AS float)> 0 and cast(face AS float) <=25000;