我有一个使用Biblio模块中的字段的视图,遗憾的是它们都被定义为文本字段。我需要根据入藏号对视图进行排序,但如果在视图中定义排序,则排序错误的数字
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20 ...
而不是
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ...
我认为这是因为Views将这些解释为字符串并相应地对它们进行排序。
是否有一种简单的方法可以创建自定义排序函数,将其排序为数字?或者我可以覆盖自动生成的SQL(我知道该怎么做),但我不知道如何在SQL中将字符串排序为数字。
答案 0 :(得分:3)
您可以使用CAST
或CONVERT
将文字转换为数字,然后进行正常排序,documentation
答案 1 :(得分:2)
考虑使用计算字段模块(http://drupal.org/project/computed_field)。它允许您将字段的值设置为内容类型中其他CCK字段的计算值。
创建一个计算字段。将数据类型设置为Integer。在计算字段的设置中,让
$node_field[0]['value'] = (int)($node->field_biblio_that_has_text[0]['value'])
;
现在,您可以根据计算字段进行排序,并且排序将以数字方式进行,而不是以文本方式进行。当然,您需要将field_biblio_that_has_text
更改为biblio字段的计算机名称(转到管理字段,您将在那里找到名称)。
要了解有关计算字段的更多信息(并了解计算精确计算字段的时间),请查看http://drupal.org/node/126522
答案 2 :(得分:2)
您可以使用此模块 https://drupal.org/project/views_natural_sort 它可以选择以不同的方式排序