Оператор обновления SQL, чтобы изменить значение поля, а не заменить его - PullRequest
2 голосов
/ 19 мая 2010

Я в процессе миграции некоторых баз данных. У меня есть эта таблица, которая имеет пару сотен строк и столбец имени файла. Для каждой записи в этой таблице необходимо изменить столбец имени файла и часть пути должна быть добавлена ​​перед значением, которое находится в этом поле.

Таблица выглядит так:

| 1 | filename1 |
| 2 | filename2 |

и должен стать:

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

Я не гуру SQL, но я знаю основы. Это ускользает от меня, хотя. Есть ли способ сделать что-то вроде:

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

Ответы [ 4 ]

9 голосов
/ 19 мая 2010

У вас в значительной степени есть это прямо там. Вам не нужно указывать предложение where, если вы хотите сделать это для всех строк, так что тогда это будет просто:

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

(|| - оператор конкатенации в PostgreSQL)

1 голос
/ 19 мая 2010

Они сказали вам, как написать конкатенацию, я предлагаю вам сначала запустить этот selct, чтобы увидеть, какими будут ваши результаты:

select filename, 'path/'|| filename  from table
where id = 1; 
0 голосов
/ 19 мая 2010
UPDATE  table
SET     filename = 'path/' || filename
WHERE   id = 1
0 голосов
/ 19 мая 2010

Я думаю, что это должно работать:

UPDATE table SET filename = CONCAT("path/", filename);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...