[英]Sort longtext as int in SQL
我在MySQL数据库中有一个表,其中一个列类型是longtext并且存储了数字。 我需要从表中按照该列中的数字排序的内容。
SELECT * FROM wp_postmeta WHERE meta_key = 'rating_avg' ORDER BY meta_value
使用此查询排序不正确,如下所示:
0
1.6
10
5
但我需要这样的:
10
5
1.6
0
我可能不会更改列类型,因为此列有许多不同类型的数据。 是否有可能在SQL查询中临时更改列类型?
您正在寻找的是CAST
。
CAST(expr AS type)
您的SQL查询应如下所示:
SELECT * FROM wp_postmeta WHERE meta_key = 'rating_avg' ORDER BY CAST(`meta_value` AS DECIMAL) DESC
这也可以通过原生WordPress函数来完成,而不必使用原始SQL。 给WP_Query的orderBy参数meta_value_num
而非meta_value
( 参考 )。
问题问题已经过去了一年多,但是对于搜索后来到这里的人来说,答案是
CAST(
meta_value
AS DECIMAL(10,2))
所以查询应该是:
SELECT * FROM wp_postmeta WHERE meta_key = 'rating_avg' ORDER BY CAST(`meta_value` AS DECIMAL(10,2)) DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.