Как обновить базу данных SQLite запросом поиска и замены? - PullRequest
26 голосов
/ 30 июня 2009

Мои знания SQL очень ограничены, особенно в отношении SQLite, хотя я считаю, что это будет своего рода общий запрос ... Или, может быть, не из-за поиска и замены ...

У меня есть эта музыкальная база данных в SQLite, которая, конечно, имеет различные поля, но важные здесь - "media_item_id" и "content_url".

Вот пример "content_url":

file:///c:/users/nazgulled/music/band%20albums/devildriver/%5b2003%5d%20devildriver/08%20-%20what%20does%20it%20take%20(to%20be%20a%20man).mp3

Я ищу запрос, который будет искать записи, подобные тем, где «content_url» следует этому шаблону и заменяет его («content_url») чем-то другим.

Например, универсальный «content_url» может быть таким:

file:///c:/users/nazgulled/music/band%20albums/BAND_NAME/ALBUM_NAME/SONG_NAME.mp3

И я хочу заменить все эти записи на:

file:///c:/users/nazgulled/music/bands/studio%20albums/BAND_NAME/ALBUM_NAME/SONG_NAME.mp3

Как я могу сделать это за один запрос?

P.S .: Я использую Firefox SQLite Manager (не могу найти лучшую и бесплатную альтернативу для Windows).

1 Ответ

50 голосов
/ 30 июня 2009

Вы, вероятно, ищете функцию replace.

Например,

update table_name set 
  content_url = replace(content_url, 'band%20albums', 'bands/studio%20albums')
where
  content_url like '%nazgulled/music/band_20albums/%';

Больше документации на http://sqlite.org/lang_corefunc.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...