sql - SQLite - 替换字符串的一部分

是否可以在SQLite表中使用SQL来替换字符串的一部分?

例如,我有一个表,其中一个字段保存文件的路径。是否有可能替换部分字符串,例如,

c:\afolder\afilename.bmp

c:\anewfolder\afilename.bmp

colin asked 2019-08-13T19:11:09Z
3个解决方案
187 votes

您可以使用内置的UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\' ) WHERE field LIKE 'C:\afolder\%';函数在查询中执行字符串替换。

SQLite核心功能列表中详细介绍了其他字符串操作函数(以及更多)

以下内容应指向正确的方向。

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

Andrew answered 2019-08-13T19:11:43Z
28 votes

@Andrew的回答是部分正确的。 这里不需要使用'C:\afolder\%'子句:

  1. 只有包含'C:\afolder\%'的字段才会受到影响,没有理由检查它。 这太过分了。
  2. 'C:\afolder\%'仅会选择仅以C:\afolder\开头的字段。 如果你在字符串里面有这个路径怎么办?

所以正确的查询只是:

UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\');
vladkras answered 2019-08-13T19:12:29Z
8 votes

如果您只想在查询中执行此操作而不会产生持久影响:

SELECT fieldA, replace(field, 'C:\afolder\', 'C:\anewfolder\'), fieldB FROM table;
bugmenot123 answered 2019-08-13T19:12:53Z
translate from https://stackoverflow.com:/questions/10532656/sqlite-replace-part-of-a-string