varchar列中的mysql数查询问题

时间:2011-12-16 09:40:21

标签: mysql

我在talbe中有这个列,由于历史原因是一个字符串,但现在新的值是数字。

我必须从数字间隔中找到最大值,但值是DB中的字符串:(

如果op_calcul是一个数字,那将是一个简单的sql:

Select MAX(op_calcul) FROM nom_prod where op_calcul  >=500 and op_calcul < 5000

但将它们作为varchar让我陷入困境。

尝试了不同的方案但尚未提供解决方案。

任何提示?

由于

3 个答案:

答案 0 :(得分:1)

SELECT MAX(CAST(op_calcul as SIGNED)) FROM nom_prod...

应该做的伎俩。您可能还需要转换WHERE子句。

理想情况下,出于性能原因,MAX和WHERE都应该使用整数列。是否有非数字或超出范围的数据?如果没有,那么改变列类型应该是相当简单的。

答案 1 :(得分:1)

使用mysql强制转换将数据转换为必需的数据类型。

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast

但请注意,它确实会影响查询性能。

答案 2 :(得分:1)

SELECT MAX(CAST(`op_calcul` AS SIGNED))
FROM `nom_prod`
WHERE `op_calcul`  >= 500
AND `op_calcul` < 5000;