将varchar与sql查询中的数字进行比较

时间:2013-05-11 14:04:05

标签: mysql sql

user(varchar40)      credit(varchar40)
u1                   400
u2                   500
u3                   600
u4                   650

和查询

$sql=mysql_query("SELECT `user` FROM `tbl` WHERE `credit` < '8'");
for($i=0;$i<mysql_num_rows($sql);$i++)

{
echo mysql_result($sql,$i,0);
}

和结果 U1
U2
U3
u4

因为信用是varchar只有第一个数字比较并返回所有用户

我如何正确比较没有更改表???

1 个答案:

答案 0 :(得分:2)

首先,为什么将数字存储为字符串?无论如何,您可以使用CAST()

将值转换为数字
SELECT `user` FROM `tbl` WHERE CAST(`credit` AS SIGNED) < 8

如果我是你,你应该修正它以纠正数据类型,以避免将列专门用于比较。要执行此操作,请更改表并添加额外的列INTEGER列。通过将列UPDATE投射到新添加的列并删除列creditcredit表格。