我有一个简单的数据库,其中包含 1 个表和多个字段,其中一个是文本字段,始终具有相同的字母前缀,后跟 3 个字符的玩家名称,然后是范围从 1 到 100 的数字。
文本记录如下所示,是由第三方应用程序生成的 .txt 文件执行 LOAD LOCAL INFILE 命令的结果。
总冠军 MAC 1,180,611,620
顶级垂钓者 1) MAC 963,956,660 2) MAC 777,545,450 3) MAC 774,563,200 4) MAC 659,721,170
最大的骗子 DVA 6 鱼 4 故事
TOP BOAT ROCKER MAC 24 岩石船
使用 PHP 我试图将 DVA 之后的数值转换为整数,并将其从最大到最小排序。我的 PHP 代码仅显示从 BIGGEST LIAR 到 4 tales 的块如下。
$data = mysql_query("SELECT * FROM stats WHERE tablestats LIKE '%biggest liar%' ORDER BY CONVERT(SUBSTRING(tablestats, LOCATE('LIAR', tablestats) +5), SIGNED INTEGER),tablestats DESC LIMIT 5;")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
echo substr($info['tablestats'],151,40);
Print "<br>";
}
?>
这会生成一个页面,其中包含我正在寻找的文本,最终呈现为
最大的骗子 DVA 6 鱼 4 故事
但是,对于多个记录,其中 3 个字符的用户名后面的变量发生更改,使用 DESC 进行排序似乎无法正常工作。我注意到,当数字是单数(1 到 9)时,它似乎没问题,但如果值超过 10,那么一个记录为 6,另一个记录为 10 的实例会导致 6 在 10 之前列出。
我在这里要做的是在 3 个字符的用户名后面指定一个空格后的数值,考虑到这里的数字可能是 1 到 100,然后将其转换为整数和顺序。
任何帮助将非常感激,
托尼。