PostgreSQL ILIKE 没有返回任何数据?

PostgreSQL ILIKE 没有返回任何数据?

我正在测试用于搜索记录的 SQL 代码。我有数据库 A(我的主副本)和数据库 B(网站的服务器,该数据库是数据库 A 的绝对克隆)。为了举个例子,假设我有一张包含 3 列的表 -

  1. 用户名

假设表中有几条记录的所有列都包含单词“test”、“testing”、“tester”。现在,您需要选择所有列都包含单词“test”的所有记录。适当的 SQL 查询将是:

SELECT * FROM users WHERE username ILIKE $$%test%$$ OR firstname ILIKE $$%test%$$ OR lastname ILIKE $$%test%$$;  

他的代码在数据库 A 上返回了正确的数据,但在数据库 B 上没有返回任何数据。副本是相同的 - 我转储了数据库 A(我的本地计算机)并将其导入到数据库 B(服务器)。只有我可以访问该服务器,所以没有人会弄乱一切。另外,我尝试删除数据库 B 并使用相同的导入重新创建它,以确保万无一失,但在 SQL 查询之后再次没有结果。

db A 和 db B 之间唯一的区别是 db A 在 32 位机器上运行,而 db B 在 64 位机器上运行。版本不同 - db A 运行 8.3.5,而 db B 运行 9.0.2,配置是安装 PostgreSQL 时自带的默认配置。

这与 32/64 位操作系统有关吗?是因为版本不同还是我需要启用设置?我 99,999% 确定我执行的 SQL 是正确的,所以我排除了那个。

答案1

ILIKE取决于区域设置,因此您应该在两台机器上进行比较。查看“22.1. 区域设置支持”,尤其是在“22.1.3. 问题”。

相关内容