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

Mysql 如何使用特定行中字符串的子字符串更新行?,mysql,sql,sqlite,Mysql,Sql,Sqlite,对于此示例,我需要一个SQLite语句: 有一个文件名如下的路径: /home/user/files/filename.ext 现在我需要将所有行更新为: /home/user/files/filename/filename.ext 对于MySQL,需要在文件/和文件名之间插入不带扩展名的文件名。ext: update filelist set filepath= CONCAT(substr(filepath,1,17),right(left(filepath,length(filepath

对于此示例,我需要一个SQLite语句:

有一个文件名如下的路径:

/home/user/files/filename.ext
现在我需要将所有行更新为:

/home/user/files/filename/filename.ext
对于MySQL,需要在
文件/
文件名之间插入不带扩展名的文件名。ext

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')
;
您可以使用内置函数来获得所需的结果

replace(X,Y,Z)函数返回通过替换 字符串X中每次出现字符串Y时的字符串Z。二进制 排序顺序用于比较。如果Y是空字符串 然后返回X不变。如果Z最初不是字符串,则将其转换为 处理前的UTF-8字符串


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

我对此一无所知。数据库是一个sqlite文件。我可以手动更新每一行,但有600多行:(我在谷歌上搜索了很多,但没有找到任何提示。也许我用了错误的关键字进行搜索。谢谢你的回答。这是一个sqlite文件。也许我找到了类似stuff函数的东西。
stuff
函数是SQL Server,而不是MySQL。非常感谢Jahirul Islam Bhuiyan!它工作得非常完美!
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