0

我想按包含文本和数字数据的 varchar 字段进行排序。

数据库中的值 / 以及使用
“ORDER BY CAST( productAS SIGNED)”输出的顺序

  • 分身80x200cm
  • 经典100x200cm
  • 超级 240x250
  • 经典85x200cm
  • 专业 60x235cm

我想要的订单是先按文本而不是按数字的顺序:(请记住,产品名称可能是以下之一:纯文本、文本+数字、文本+数字+文本)

  • 经典85x200cm
  • 经典100x200cm
  • 分身80x200cm
  • 超级 240x250
  • 专业 60x235cm

我还尝试了以下没有正确结果的方法:
“ORDER BY CAST(SUBSTRING(product,LOCATE(' ',product)+1) AS SIGNED) ASC”
“ORDER BY CASE WHEN product REGEXP '^[0-9]+$ ' THEN 产品*1 else 999999 END"

任何帮助,将不胜感激!

4

1 回答 1

0

这个解决方案非常接近。当然,您必须首先将名称放入 php 数组中。 http://php.net/manual/de/function.natcasesort.php

于 2014-10-27T11:56:58.090 回答