代码之家  ›  专栏  ›  技术社区  ›  Shashikant Kore

按查询排序忽略标点符号

  •  0
  • Shashikant Kore  · 技术社区  · 15 年前

    这是PostgreSQL。

    表中的列包含带标点的字符串值。值为“aac”、“.aaa”、“aa_b”等。当按ORDER BY子句指定此列时,结果的顺序几乎是随机的。以句点开头的字符串应该出现在顶部,但不会出现这种情况。它们出现在中间的某个地方。

    令人惊讶的是,这种行为只在一个数据库中出现。同一查询在其他主机上的数据库上工作正常。

    可能的原因是什么?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Milen A. Radev    15 年前

    “order by”(字符串比较)行为取决于 the cluster's locale .

        2
  •  0
  •   puetzk    15 年前

    首先,检查一下解释,看看它是如何分类的。

    • 如果它调用的是用户定义的比较函数,请查看该函数。
    • 如果它正在遍历一个索引,请查看该索引是否使用了不正确的排序函数(不可传递的函数或类似函数)。

    如果explain没有显示任何奇怪的地方,请检查集群的区域设置——可能是使用忽略某些字符的区域设置进行比较。