我的数据库中有大量图片。
图像现在都是jpg。
他们曾经是jpg和png所以我将扩展名保存在我的数据库中。
现在我要删除所有的扩展,以便点后面的所有内容(包括点)。
这是否可以使用sql。
我想我应该使用类似的东西:
update Where row like '%.jpg' or '%.JPG' or '%.png' or '%.PNG' set value row ..
但是我找不到任何东西。这是可能的sql?
我知道我可以使用php,爆炸然后只回显[0]但我想在我的数据库中更改它,所以每个人看起来都很整洁。
答案 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')