2015-12-30 46 views
0

我的数据库中有太多的链接,需要删除其中的一些字符串。 像以下链接:如何删除数据库文件中的一些字符串

example.com/gallery/images/53637678653059406553.gif.pagespeed.ce.zHxD2y5wHz.gif

我需要删除第一GIF或JPEG或PNG文件后的所有内容。 (.pagespeed.ce.zHxD2y5wHz.gif)有人有想法帮助我?

+0

您正在使用哪个数据库? –

回答

1

在SQL Server中,你可以尝试这样的:

LEFT(yourValue, CHARINDEX('gif', yourValue) - 1) 

在MYSQL

SELECT SUBSTRING_INDEX(yourValue, 'gif', 1) 
+0

2评论:它应该搜索'.gif'而不是'gif'。我们也想保留这个部分,所以我们要'+ 2'而不是' - 1'(或''3'''.')。所以:'选择左(yourValue,CHARINDEX('.gif',yourValue)+ 3)' – EvilBob22

0

我扩大对拉胡尔·帕蒂的答案。它适用于.gif,但我们不知道正在使用的文件扩展名。我建议寻找第二个.并将其切断。

下面将样品在MS SQL格式

寻找第一.的位置:

CHARINDEX('.', yourValue) 

.后获得的一切(或者至少在下一个10个字符):

SUBSTRING(yourValue, CHARINDEX('.', yourValue) + 1, 10) 

找到下一个.在该子字符串中的位置G:

CHARINDEX('.',SUBSTRING(yourValue, CHARINDEX('.', yourValue) + 1, 10)) 

添加两个位置找到第二.整个字符串中的位置:

CHARINDEX('.', yourValue) + CHARINDEX('.', SUBSTRING(yourValue, CHARINDEX('.', yourValue) + 1, 10)) 

只保留数据到那个第二.

LEFT(yourValue, CHARINDEX('.', yourValue) + CHARINDEX('.', SUBSTRING(yourValue, CHARINDEX('.', yourValue) + 1, 10)) - 1) 

请注意,依赖于数据的问题仍然存在。如果没有第二个.,则会切断.gif,如果根本没有.,则会出错。

相关问题