【问题标题】:Orderby wordpress with big numbersOrderby wordpress 大数字
【发布时间】:2021-06-15 21:02:40
【问题描述】:

市值是这样保存到我的数据库中的:968,953、92,673,921 等。所以 wordpress 认为在第一次引用之前是十进制的。使 968,953 排在 92,673,921 前面。任何人都知道如何做到这一点,而无需更改 SQL 中的数字?

    $args = array (
        'post_type' => array('coins'),

        'posts_per_page' => 20,

        'paged' => $paged,

        'meta_key' => 'market_cap',
        
        'orderby' => 'meta_value meta_value_num',

        'order' => 'DESC',
);

【问题讨论】:

  • 尝试像'orderby' => ['meta_value', 'meta_value_num']这样将orderby设为数组。
  • 不工作,它给出了相同的结果。
  • 为什么不正确存储值?
  • @Strawberry 改变了一切,现在我正确地存储它们。
  • 太棒了。所以我想我们可以关闭这个问题?

标签: php mysql wordpress


【解决方案1】:

您可以将值显式转换为整数

'orderby' => 'CAST(REPLACE(meta_value,",","") as unsigned)'

'orderby' => 'CAST(REPLACE(meta_value_num,",","") as unsigned)'

不确定哪些包含您尝试排序的值

【讨论】:

  • 两者都不起作用。第二个看起来像这样:53,392, 102,627, 1,467,106, 792,363, 137,718, 34,666,930 第一个 346,575, 312,358, 306, 291,872, 232,912,502
  • 那里有 2 种,如果你删除一个怎么办?只保留 meta_value 或 meta_value_num?
  • 两者都试过了,结果相同。53,392, 102,627, 1,467,106
  • 请参阅修改后的答案。逗号是问题
  • 致命错误:未捕获错误:语法错误,意外的单引号字符串") as unsigned),meta_value_num",期望")" 修改成这样; orderby' => 'CAST(REPLACE(meta_value_num,",","") as unsigned)',还是不行
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 2012-08-16
  • 2012-02-06
  • 1970-01-01
  • 2013-05-01
相关资源
最近更新 更多