2010-05-18 59 views
2

我正在迁移某些数据库的过程中。我有这张表有几百行,并有一个文件名列。对于此表中的每条记录,文件名列需要更改,并且路径的一部分需要预置为该字段中的值。SQL更新语句来更改字段的值,而不是替换它

表是这样的:

| 1 | filename1 | 
| 2 | filename2 | 

,需要成为:

| 1 | path/filename1 | 
| 2 | path/filename2 | 

我不是一个SQL大师,但我知道的基本知识。尽管如此,我仍然避而远之有没有办法做这样的事情:

update table 
    set filename = 'path/' + filename 
where id = 1; 
+1

这几乎是可怕的这是多么迅速回答。谢谢大家。有些东西告诉我这可能很容易为亲dba的;-) – wzzrd 2010-05-18 20:47:12

回答

9

你很可能就在那里。你并不需要,如果你想这样做的所有行指定where条款,所以后来这纯粹是:

update table set filename = 'path/' || filename; 

||是PostgreSQL的连接运算符)

+0

'''是PLSQL中的连接运算符,它由Oracle和另一个数据库使用,使我逃脱ATM。 – 2010-05-18 20:45:39

+0

也是SQL标准中的数字。 – 2010-05-18 21:48:47

0

我想这应该工作:

UPDATE table SET filename = CONCAT("path/", filename); 
0
UPDATE table 
SET  filename = 'path/' || filename 
WHERE id = 1 
1

他们告诉你如何写德串联,我建议你先运行此SELCT看到啥子你的结果将是:

select filename, 'path/'|| filename from table 
where id = 1;