2009-04-10 65 views
0

这是与Postgresql。通过查询排序忽略标点符号

表中的列包含带标点符号的字符串值。这些值是“aac”,“.aaa”,“aa_b”等。当此列按顺序指定时,结果顺序几乎是随机的。以句点开头的字符串应该出现在顶部,这不会发生。他们出现在中间的某个地方。

令人惊讶的是,只有一个数据库才能看到此行为。相同的查询在其他主机上的数据库上正常工作。

这可能是什么原因?

回答

0

首先,检查EXPLAIN并查看它是如何进行排序的。

  • 如果它正在调用用户定义的比较函数,请查看该函数。
  • 如果它正在走索引,请查看该索引是否使用了不正确的排序函数(不是传递或某些类型的函数)。

如果EXPLAIN没有显示任何奇数,请检查集群的语言环境 - 可能是使用忽略某些字符的语言环境进行比较。