PostgreSQL 查询失败

PostgreSQL query failure

我对 PostgreSQL 有一个独特的问题。将数据插入数据库后,我尝试检索大于特定字符串的所有内容。但是,它没有 return 任何数据。所以,我在另一台机器上试过了,它成功了。所以我的问题是我的数据是 returned 在一台机器上而不是另一台机器上。我测试了:

Windows 7 pro desktop 运行 PostgreSQL 9.2(可用)
Windows 8.1 专业笔记本电脑 运行 PostgreSQL 9.3(可用)
Fedora 20 运行 笔记本电脑 PostgreSQL 9.3(可用)
Fedora 20 运行 桌面 PostgreSQL 9.3(失败)

以下是我的测试用例,它分布在所有系统中:

create table test(key0 character(38) not null, constraint pkey primary key (key0)) with (oids=false);
insert into test (key0) values ('00 00        00        00 0000');

以下查询是return在机器上的不同结果:

select * from test where key0 >= '00 00        00        00 00        00' order by key0;

我完全不知道为什么这些查询在一台机器上不起作用。

如有任何帮助,我们将不胜感激。

这很可能与排序规则有关。看到这个:

select * from test where key0 >= '00 00        00        00 00        00' order by key0;
 key0 
------
(0 rows)

select * from test where key0 >= '00 00        00        00 00        00' COLLATE "C" order by key0;
                  key0                  
----------------------------------------
 00 00        00        00 0000        
(1 row)

我猜你没有为 CREATE DATABASE 语句提供 LC_COLLATE 参数,它复制了系统默认值,而这恰好在你的系统中是不同的。