tags:

views:

57

answers:

4

I'm in the process of migrating some databases. I have this table that has a couple of hundred rows, and has a filename column. To each record in this table, the filename column needs to be altered and part of a path needs to be prepended to the value that is in that field.

The table is like:

| 1 | filename1 |
| 2 | filename2 |

and needs to become:

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

I am not an SQL guru, but I know the basics. This eludes me though. Is there a way to do something like:

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

You pretty much have it right there. You don't need to specify a where clause if you want to do it for all the rows, so then it would just be:

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

(|| is the concatenation operator in PostgreSQL)

Alison R.
`||` is the concatenation operator in PLSQL, which is used by Oracle and another db that escapes me ATM.
OMG Ponies
Also figures in the SQL standard.
Milen A. Radev
A: 

I think this should work:

UPDATE table SET filename = CONCAT("path/", filename);
jeanreis
A: 
UPDATE  table
SET     filename = 'path/' || filename
WHERE   id = 1
Quassnoi
+1  A: 

They have told you how to write teh concatenation, I suggest you run this selct first to see waht your results will be:

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