我正在try 使用Geohash(手动方式,因为由于我正在使用的框架,我不能使用postgres gis的geo方法).

为此,我在postgres(geoHash text default ''::text not null)中有一个列来存储该值.

现在来看问题:假设我的列包含值c28xzxe29h,我try 使用以下查询来查询该记录:geoHash <= 'c28x~'然而,它没有返回期望值(select 'c28xzxe29h' <= 'c28x~';返回False).然而,该查询在FireStore中以及在例如Java脚本中执行时也能正确工作(在这两种情况下都包括条目/返回TRUE).我还用铁 rust (println!("{}", "c28xzxe29h" <= "c28x~");,返回true:https://play.rust-lang.org/)进行了测试.因此,我不确定为什么所有编程语言似乎都同意,但Postgres并非如此.

问题是如何让postgres返回期望值(我使用geofire-commons来生成查询范围,在某些情况下会返回~个字符).

推荐答案

字符串的顺序取决于使用的排序规则.不同的人类语言有不同的排序规则.也许您提到的所有其他编程语言都使用C排序规则,这要么是因为它们被配置为默认这样做,要么是因为这是它们唯一知道如何做的事情.

如果您告诉PostgreSQL使用C排序规则,它将返回TRUE:

select 'c28xzxe29h' <= 'c28x~' collate "C";

如果需要,您可以将其设置为默认排序规则.

Postgresql相关问答推荐

PostgreSQL按描述请求

在Go中,如何在没有数据库包的情况下运行PostgreSQL查询?

mosquito-go-auth with postgres authorization error

postgres 中的模式前缀,被调用元素的范围

订阅标签保存在哪个表中?

为什么这里的默认格式不同? (ISO 8601 的两种不同实现)

PostgreSQL:是否可以将枚举转换为整数?

Postgres中的GROUP BY - JSON数据类型不相等?

psql中set、\set和\pset的区别

Select 空字段

gem install pg 无法绑定到 libpq

SQL - 提示引用列

使用 Hibernate 查询:colon gets treated as parameter / escaping colon

如何在 PostgreSQL 中插入多行

如何从另一个脚本运行 postgres sql 脚本?

Django:按月查询组

有没有办法确保 WHERE 子句在 DISTINCT 之后发生?

PostgreSQL 使用 UUID 与文本作为主键

实时监控 PostgreSQL 查询的应用程序?

IF处或附近的 Postgres 语法错误