这个例子我需要一个SQLite语句:
有一个文件名路径如:
/home/user/files/filename.ext
现在我需要将所有行更新为:
/home/user/files/filename/filename.ext
需要在files/
和filename.ext
答案 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子句