0

在我们的软件中,我们仍在使用 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 上,消息显示“更新 2689816”,在 9.5 上显示“更新 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 不同?

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

4

1 回答 1

0

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

于 2016-03-21T13:58:57.170 回答