繁体   English   中英

在SQL中将longtext排序为int

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM