SQLite - заменить часть строки

Возможно ли использовать SQL в таблице SQLite для замены части строки?

Например, у меня есть таблица, в которой одно из полей содержит путь к файлу. Можно ли заменить части строки так, чтобы, например,

c:\afolder\afilename.bmp

становится

c:\anewfolder\afilename.bmp

?

Ответ 1

Вы можете использовать встроенную функцию replace() для выполнения замены строки в запросе.

Другие функции манипуляции строками (и более) подробно описаны в списке основных функций SQLite

Следующее должно указывать на вас в правильном направлении.

UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\' ) WHERE field LIKE 'C:\afolder\%';

Ответ 2

Ответ

@Andrew является частично правильным. Не нужно использовать предложение WHERE здесь:

  • В любом случае будут затронуты только поля, содержащие C:\afolder, и никаких оснований для его проверки. Это чрезмерно.
  • 'C:\afolder\%' будет выбирать только поля, начинающиеся только с C:\afolder\. Что делать, если у вас есть этот путь внутри строки?

Итак, правильный запрос:

UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\');

Ответ 3

И если вы просто хотите сделать это в запросе без длительных последствий:

SELECT fieldA, replace(field, 'C:\afolder\', 'C:\anewfolder\'), fieldB FROM table;