SQL
テーブルでSQLite
を使用して文字列の一部を置き換えることは可能ですか?
たとえば、フィールドの1つがファイルへのパスを保持するテーブルがあります。文字列の一部を交換することは可能ですか?.
c:\afolder\afilename.bmp
になる
c:\anewfolder\afilename.bmp
?
組み込みのreplace()
関数を使用して、クエリで文字列の置換を実行できます。
他の文字列操作関数(およびその他)は SQLiteコア関数リスト で詳しく説明されています
以下は正しい方向を指し示しているはずです。
UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\' ) WHERE field LIKE 'C:\afolder\%';
@ Andrew 答えは部分的に正しいです。ここでWHERE
句を使用する必要はありません。
C:\afolder
を含むフィールドのみが影響を受け、チェックする理由はありません。過剰です。'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;