PostgreSQL 9.3:REPLACE中的SELECT()

时间:2015-08-05 12:07:23

标签: postgresql postgresql-9.3

我有两个表格如下所示:

表1:Test1

Create table Test1
(
  name varchar(50) 
);

插入:此表中有5百万条记录。

insert into Test1 values('a$xyz');  
insert into Test1 values('xyz$a');

表2:测试2

create table Test2
(
  pattern varchar(50)
);

插入:

insert into Test2 values('a$');
insert into Test2 values('$a');

现在我想更新表Test1。具体来说,我想通过替换表Test2的模式来更新表中的名称。

像:

update Test1
set name = replace(name,'a$','');

如何从Test2表中获取string_to_replace?据我所知,我们不能在REPLACE函数中使用SELECT。

1 个答案:

答案 0 :(得分:0)

你可以毫无问题地做到这一点:

UPDATE test1
SET name = replace(name, pattern, '')
FROM test2
WHERE pattern = 'a$';

但这有点多余。假设你在表'test2'中有一些'id',那么它会变得更有用:

UPDATE test1
SET name = replace(name, pattern, '')
FROM test2
WHERE id = 17;