【发布时间】:2010-07-27 16:24:31
【问题描述】:
如何对存储为字符串的自定义字段数据进行数字排序。我无法将其更改为数据库。
query_posts($query_string. '&orderby=meta_value&meta_key=price&order=DESC' );
这是我正在使用的,但它会将其排序为字符串,因为它也存储为字符串。
谁能告诉我如何在不更改数据库的情况下将其转换为数字?
提前致谢。
迷宫
【问题讨论】:
如何对存储为字符串的自定义字段数据进行数字排序。我无法将其更改为数据库。
query_posts($query_string. '&orderby=meta_value&meta_key=price&order=DESC' );
这是我正在使用的,但它会将其排序为字符串,因为它也存储为字符串。
谁能告诉我如何在不更改数据库的情况下将其转换为数字?
提前致谢。
迷宫
【问题讨论】:
您可以使用转换字符串元数据的custom query string 来做到这一点:
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'price'
AND wposts.post_type = 'post'
ORDER BY ABS(wpostmeta.meta_value) DESC
";
如果您的元值包含美元符号 ($123.45),您可以调整 ORDER BY 以将其删除:
ORDER BY ABS(SUBSTRING(wpostmeta.meta_value, 2)) DESC
【讨论】:
ORDER BY CAST(wpostmeta.meta_value AS DECIMAL) DESC。