2015-08-15 48 views
-1

我需要一个SQLite语句这个例子:如何使用该特定行中字符串的子字符串更新行?

有一个与文件名类似的路径:

/home/user/files/filename.ext 

现在我需要更新所有行这样的:

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

的文件名,而不需要在files/filename.ext之间插入扩展名

+0

子集表中的行我完全新本。该数据库是一个sqlite文件。我可以手动更新每一行,但有600多行(和我GOOGLE了很多,但没有找到提示。也许我在用错误的关键字搜索。 –

回答

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) 

希望这对你的工作。

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

感谢您的回答。它是一个sqlite文件。 –

+0

ok,寻找sqllite语法 –

+0

'STUFF'函数是SQL Server,而不是MySQL。 –

0

您可以使用,建立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子句,如果需要修改

相关问题