[英]Mysql numbers in varchar columns query issue
我有这个列在talbe中,由于历史原因是一个字符串,但现在新的值是数字。
我必须从数字间隔中找到最大值,但值是DB中的字符串:(
如果op_calcul会是一个数字,那将是一个简单的sql:
Select MAX(op_calcul) FROM nom_prod where op_calcul >=500 and op_calcul < 5000
但是把它们当成varchar使我陷入了麻烦。
尝试了不同的方案但尚未提供解决方案。
任何提示?
谢谢
SELECT MAX(CAST(op_calcul as SIGNED)) FROM nom_prod...
应该做的伎俩。 您可能还需要强制转换WHERE子句。
理想情况下,出于性能原因,MAX和WHERE都应该使用整数列。 是否有非数字或超出范围的数据? 如果没有更改列类型,那将是相当琐碎的。
使用mysql强制转换将数据转换为所需的数据类型。
http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast
但是请注意,它确实会影响查询性能。
SELECT MAX(CAST(`op_calcul` AS SIGNED))
FROM `nom_prod`
WHERE `op_calcul` >= 500
AND `op_calcul` < 5000;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.