Mysql 如何使用特定行中字符串的子字符串更新行?
对于此示例,我需要一个SQLite语句: 有一个文件名如下的路径: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
/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