仅使用sql替换部件

时间:2014-02-08 14:32:13

标签: sql

我的数据库中有大量图片。

图像现在都是jpg。

他们曾经是jpg和png所以我将扩展名保存在我的数据库中。

现在我要删除所有的扩展,以便点后面的所有内容(包括点)。

这是否可以使用sql。

我想我应该使用类似的东西:

update Where row like '%.jpg' or '%.JPG' or '%.png' or '%.PNG' set value row ..
但是我找不到任何东西。这是可能的sql?

我知道我可以使用php,爆炸然后只回显[0]但我想在我的数据库中更改它,所以每个人看起来都很整洁。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。语法是:

update <table>
    set value = substring_index(row, '.', 1)
    Where row like '%.jpg' or row like '%.JPG' or row like '%.png' or row like '%.PNG' 

这假设名称中只有一个'.'

编辑:

如果.可以多次出现在名称中,您可以使用此技巧:

update <table>
    set value = substring_index(row, '.',
                                length(row) - length(replace(row, '.', ''))
                               )
    Where row like '%.jpg' or row like '%.JPG' or row like '%.png' or row like '%.PNG' 

表达式length(row) - length(replace(row, '.', '')计算行中的句点数。

您还可以将where表达为:

    where substring_index(row, '.', -1) in ('jpg', 'JPG', 'png', 'PNG')