Grails - sortableColumn - 强制对数字字符串进行数字排序
我的数据库中以字符串形式存储了数字,我想使用 Grails sortableColumns 对它们进行数字排序。有办法做到这一点吗?
I have number stored in my database as Strings, and I would like to sort them numerically using Grails sortableColumns
. Is there anyway to do this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将数字存储为格式化字符串可以防止它们利用本机数字排序。看一下 Grails formatNumber 标记,它可以使用您所需的区域设置来显示小数分隔符,这样您就可以使用实际的数字数据,而不必存储用于显示目的的格式化字符串。
如果您要排序的域类同时具有格式化和未格式化的数字数据,您可以尝试类似的操作,根据需要替换排序列参数:
如果您的域类仅具有格式化字符串,您可以尝试将其解析为 BigDecimal (或无论匹配的数字类型是什么),但是如果您的服务器的区域设置与字符串格式的小数分隔符区域设置不匹配,则这可能无法正常工作。
Storing numbers as formatted strings prevents them from taking advantage of native numerical sorting. Have a look at the Grails formatNumber tag that can use your desired locale to display decimal separators so you can use the actual numeric data and not have to store the formatted string for display purposes.
If the domain class you want to sort has both the formatted and unformatted numeric data, you could try something like this, substituting the sort column param as necessary:
If your domain class only has the formatted string you can try parsing it to BigDecimal (or whatever the matching numeric type is) but this may not work properly if your server's locale does not match the string format's decimal separator locale.