如何使用该特定行中字符串的子字符串更新行?

时间:2015-08-15 04:32:09

标签: mysql sql sqlite

这个例子我需要一个SQLite语句:

有一个文件名路径如:

/home/user/files/filename.ext

现在我需要将所有行更新为:

/home/user/files/filename/filename.ext

需要在files/filename.ext

之间插入不带扩展名的文件名

2 个答案:

答案 0 :(得分:0)

对于MySQL:

update filelist set filepath= CONCAT(substr(filepath,1,17),right(left(filepath,length(filepath)-4),length(filepath)-21),'/',right(left(filepath,length(filepath)-4),length(filepath)-21),substr(filepath,-4)) 

对于SQLite:

update filelist
set filepath= substr(filepath,1,17)||substr(filepath,length(filepath)-3,21-length(filepath))||'/'||substr(filepath,length(filepath)-3,21-length(filepath))||substr(filepath,-4) 

希望这对你有用。

如果使用MS SQL将文本插入文本中,请使用stuff函数:

update filelist
set filepath=stuff(filepath,17,1,'gggg')
;

答案 1 :(得分:0)

您可以使用内置REPLACE()函数来获得所需的结果。

  

replace(X,Y,Z)函数返回由替换形成的字符串   字符串Z表示字符串X中每次出现字符串Y.BINARY   整理顺序用于比较。如果Y是空字符串   然后返回X不变。如果Z最初不是字符串,则转换为   处理前的UTF-8字符串。

UPDATE table_name
SET pathColumn = replace(pathColumn, '/home/user/files/', '/home/user/files/filename/')
-- Where column = some condition ---- THIS IS OPTIONAL, if you dont want to modify all rows

如果需要修改表的子集行,可以添加WHERE子句