Heroku Postgres上SQL查询中的字符串比较

时间:2013-12-26 07:39:09

标签: sql string postgresql heroku comparison

我昨天看到了Heroku Postgres的怪异行为。当我执行此sql查询以进行字符串比较时:

SELECT ('2013/12-25' <= '2013/12/')

我的开发机器上的Postgres(9.2.3,Mac OS X Mavericks)返回 true (这是正确的),而Heroku上的Postgres(9.2.4)返回 false !!!

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

似乎这两个Postgresql实例[在服务器配置中有不同的默认COLLATIONS(http://www.postgresql.org/docs/9.3/static/collation.html):

尝试检查此命令是否在两台服务器上输出相同的结果:

show lc_collate

对于您的示例,不同的排序规则可以显示不同的结果。例如:

SELECT (('2013/12-25' COLLATE "en_US") <= ('2013/12/' COLLATE "en_US"))
UNION ALL
SELECT (('2013/12-25' COLLATE "ko_KR") <= ('2013/12/' COLLATE "ko_KR"))

SQLFiddle demo