SQLite - 替换字符串的一部分

时间:2012-05-10 11:03:04

标签: sql sqlite

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

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

c:\afolder\afilename.bmp

变为

c:\anewfolder\afilename.bmp

3 个答案:

答案 0 :(得分:191)

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

SQLite core functions list

中详细介绍了其他字符串操作函数(以及更多)

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

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

答案 1 :(得分:28)

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

  1. 无论如何,只有包含C:\afolder的字段会受到影响,没有理由对其进行检查。这太过分了。
  2. 'C:\afolder\%'将仅选择以C:\afolder\开头的字段。如果你在字符串里面有这个路径怎么办?
  3. 所以正确的查询只是:

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

答案 2 :(得分:8)

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

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