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


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

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

c:afolderafilename.bmp

становится

c:anewfolderafilename.bmp

?

3 88

3 ответа:

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

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

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

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

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

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

поэтому правильный запрос просто:

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

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

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