web-dev-qa-db-ja.com

SQLite-文字列の一部を置き換える

SQLテーブルでSQLiteを使用して文字列の一部を置き換えることは可能ですか?

たとえば、フィールドの1つがファイルへのパスを保持するテーブルがあります。文字列の一部を交換することは可能ですか?.

c:\afolder\afilename.bmp

になる

c:\anewfolder\afilename.bmp

96
colin

組み込みのreplace()関数を使用して、クエリで文字列の置換を実行できます。

他の文字列操作関数(およびその他)は SQLiteコア関数リスト で詳しく説明されています

以下は正しい方向を指し示しているはずです。

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

193
Andrew

@ Andrew 答えは部分的に正しいです。ここでWHERE句を使用する必要はありません。

  1. とにかくC:\afolderを含むフィールドのみが影響を受け、チェックする理由はありません。過剰です。
  2. 'C:\afolder\%'は、C:\afolder\で始まるフィールドのみを選択します。文字列内にこのパスがある場合はどうなりますか?

したがって、正しいクエリは次のとおりです。

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

そして、あなたが永続的な結果なしでクエリでそれをしたいだけなら:

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