postgresql 8.4 和 9.5 的更新结果不同

update results in postgresql 8.4 and 9.5 are different

在我们的软件中,我们仍在使用 postgresql 8.4。 在 Archlinux 上,我找不到任何安装 8.4 的可能性,所以我开始了一个 9.5 的任务,然后想将它转换为 8.4。现在我可以 运行 两个版本的 UPDATE 查询,但我得到不同的结果。

查询:

UPDATE properties                                                               
SET propertyvalue = regexp_replace(propertyvalue, E'[\u0001-\u001f]', '', 'g') 
WHERE properties_id in 
   (SELECT DISTINCT(properties_id) 
    FROM regexp_matches(propertyvalue, E'[\u0001-\u001f]'));

工作流程是我重新初始化数据库并将相同的 sql-dump 转储到两个版本中。

在 8.4 上,消息显示 "UPDATE 2689816",在 9.5 上显示 "UPDATE 241294"。

当我运行

SELECT count(*) 
FROM properties 
WHERE properties_id in 
  (SELECT DISTINCT(properties_id) 
   FROM regexp_matches(propertyvalue, E'[\u0001-\u001f]'));

两个版本的结果相同:

count  
--------
 241294
(1 row)

这是我最困惑的地方。 为什么 regexp_matches 对模式的解释似乎与 regexp_replace 不同?

有没有人有这方面的经验?

我只是愚蠢,脚本只是删除了一个 \ 我刚刚在我的问题中看到它,抱歉这个问题