SQLite
テーブルのSQL
を文字列の一部に置き換えることは可能ですか?SQLite - 文字列の一部を置換する
たとえば、フィールドの1つがファイルへのパスを保持するテーブルがあります。 文字列の一部を置換することは可能ですか?
c:\afolder\afilename.bmp
は
c:\anewfolder\afilename.bmp
なり?
SQLite
テーブルのSQL
を文字列の一部に置き換えることは可能ですか?SQLite - 文字列の一部を置換する
たとえば、フィールドの1つがファイルへのパスを保持するテーブルがあります。 文字列の一部を置換することは可能ですか?
c:\afolder\afilename.bmp
は
c:\anewfolder\afilename.bmp
なり?
組み込みのreplace()
関数を使用して、クエリで文字列置換を実行できます。
その他の文字列操作関数(およびそれ以上)正しい方向にあなたを指している必要があり、次のSQLite core functions list
に詳述されています。
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;
WHERE句は必要ありませんが、心の安らぎを少し与えます。 WHEREがなければ、SqlLiteはテーブルのすべての行が影響を受けたことを伝えます。 WHEREを使用することで、潜在的に何千もの代わりに期待していた十数行程度しか得られません。 –
@WestonWedding WHERE句の有無にかかわらずクエリ時間を比較しました。クエリーが2回かかる。 –