2

桌子

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

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

我如何在不更改表的情况下进行正确比较???

4

1 回答 1

4

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

SELECT `user` FROM `tbl` WHERE CAST(`credit` AS SIGNED) < 8

如果我是您,您应该将其修复为正确的数据类型,以避免始终只为比较而强制转换列。为此,请更改表格并添加额外的列,即一INTEGER列。UPDATE通过将列credit转换为新添加的列和删除列来创建表credit

于 2013-05-11T14:05:39.183 回答