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

标签 sql string postgresql heroku comparison

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

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

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

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

最佳答案

似乎这两个 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

关于sql - Heroku Postgres 上 SQL 查询中的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781061/

相关文章:

sql - 在 Apache Superset 中添加 Druid 集群作为 SQL 数据库

c - 为什么我的指针数组返回一个 unicode 字符?

MySQL,如何使用 PHP 验证字符串日期?

python - 使用 Python 转储 PostgreSQL 数据库模式

sql - 在 SQL 中命名中间表的标准做法是什么?

sql - 始终选择表中所有记录的 WHERE 子句

java - 创建和使用 String 对象来锁定线程同步是一个好习惯吗?

postgresql - Postgres 选择 BTREE 而不是 BRIN 索引

java - 如何使用 Spring Boot Hibernate 将 XML 字符串保存在 Postgresql 表的 XML 类型列中

sql - 在sql中合并多个 "With"子句