postgresql 8.4和9.5中的更新结果是不同的

时间:2016-03-21 13:46:52

标签: regex postgresql sql-update postgresql-8.4 postgresql-9.5

在我们的软件中,我们仍在使用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解释模式?

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

1 个答案:

答案 0 :(得分:0)

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