在我们的软件中,我们仍在使用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解释模式?
有没有人有这方面的经验?
答案 0 :(得分:0)
我只是愚蠢,脚本只是删除了\我刚刚在我的问题中看到它,对不起这个问题