SQLite-替换字符串的一部分

有没有可能在 SQLite表中使用 SQL来替换字符串的一部分?

For example, I have a table where one of the fields holds the path to a file. Is it possible to replace parts of the string so that, e.g.

c:\afolder\afilename.bmp

变成了

c:\anewfolder\afilename.bmp

?

92701 次浏览

可以使用内置的 replace()函数在查询中执行字符串替换。

其他字符串操作函数(以及更多)在 SQLite core functions list中有详细介绍

以下内容将为您指明正确的方向。

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

@ Andrew 部分答案是正确的,在这里不需要使用 WHERE子句:

  1. 只有包含 C:\afolder的字段会受到影响,没有理由去检查它。
  2. '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;