我需要一个SQLite语句这个例子:如何使用该特定行中字符串的子字符串更新行?
有一个与文件名类似的路径:
/home/user/files/filename.ext
现在我需要更新所有行这样的:
/home/user/files/filename/filename.ext
的文件名,而不需要在files/
和filename.ext
之间插入扩展名
我需要一个SQLite语句这个例子:如何使用该特定行中字符串的子字符串更新行?
有一个与文件名类似的路径:
/home/user/files/filename.ext
现在我需要更新所有行这样的:
/home/user/files/filename/filename.ext
的文件名,而不需要在files/
和filename.ext
之间插入扩展名
对于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)
希望这对你的工作。
update filelist
set filepath=stuff(filepath,17,1,'gggg')
;
感谢您的回答。它是一个sqlite文件。 –
ok,寻找sqllite语法 –
'STUFF'函数是SQL Server,而不是MySQL。 –
您可以使用,建立REPLACE()函数来获得期望的结果:如果您使用MS SQL插入文字文本
使用的东西的功能。
的替换(X,Y,Z)函数返回由二进制 整理序列用于比较字符串X中代 串Z代表序列Y的每个匹配形成的字符串。如果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子句,如果需要修改
子集表中的行我完全新本。该数据库是一个sqlite文件。我可以手动更新每一行,但有600多行(和我GOOGLE了很多,但没有找到提示。也许我在用错误的关键字搜索。 –