gpt4 book ai didi

java - 如何确保java CompareTo返回与数据库ORDER BY相同的结果?

转载 作者:行者123 更新时间:2023-12-02 05:06:57 24 4
gpt4 key购买 nike

在单元测试中,我验证包含“ORDER BY DESC”部分并返回字符串值的数据库查询的结果。

需要明确的是:我检查查询是否按预期顺序返回预期结果

SQL查询:

SELECT member.name FROM member ORDER BY member.name DESC

测试结果:

MTH_TESTER_TAXER_W_HLPERS_AFcCmhecUo
MTH_TESTER_TAXER_wCfRUAQuzT

当用java验证结果时,我这样做:

foreach(String value : values) {
if (previous != null) {
assertTrue(value.compareToIgnoreCase(previous) <= 0);
}
previous = value;
}

使用 ORDER BY 的上述数据库结果失败(上面示例中的降序)。所以基本上java中的以下内容会失败,但在DB中不会失败:

assertTrue("MTH_TESTER_TAXER_wCfRUAQuzT".compareToIgnoreCase("MTH_TESTER_TAXER_W_HLPERS_AFcCmhecUo") <= 0)

为什么 ORDER BY 与 JavacompareTo 自然字符串排序不兼容?

如何使它们兼容?

我在 Windowsd 7 上使用 Postgresql 9.X,默认安装。

最佳答案

尝试使用字符串的 CASE_INSENSITIVE_ORDER :

 String[] str = {"abc", "pqr", "zxt", "Zxy", "xyz"};
Arrays.sort(str, String.CASE_INSENSITIVE_ORDER.reversed());
System.out.println(Arrays.toString(str));

关于java - 如何确保java CompareTo返回与数据库ORDER BY相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com