删除mysql中字符串后的所有内容

Posted

技术标签:

【中文标题】删除mysql中字符串后的所有内容【英文标题】:Removing everything after a string in mysql 【发布时间】:2017-06-03 13:09:34 【问题描述】:

我有一堆图像文件名,我上传到 wordpress 并想在 phpmyadmin 中使用 sql 更改文件名。这些文件是这样的: text-text-text-328x328.jpg text-text-590x236.jpg 文字-文字-文字-文字-150x150.jpg text-569x348.jpg

tex-text-text.jpg

所以我想删除标题中的文件。我唯一能做的就是在 - 加上一个数字之后删除字符串

我知道如何在 - 之后删除所有内容:

UPDATE MyTable
SET MyText = LEFT(MyText, CHARINDEX('-', MyText) - 1)
WHERE CHARINDEX(';', MyText) > 0

只是不确定如何删除 - 和数字之后的所有内容。

谢谢!

【问题讨论】:

我想我可以将上面的代码运行10次,sql'-1','2','3','4'等。 您可以在 WHERE 子句中添加一个 REGEX 条件匹配 .*-\d+x\d+\.jpg 之类的内容。 【参考方案1】:
SELECT 
  name, 
  concat(
    substr(name, 1, length(name) - length(substring_index(name,'-',-1)) - 1),
    '.',
    substring_index(name, '.', -1)
  ) as newname
FROM 0_a

【讨论】:

非常感谢!效果很好:)

以上是关于删除mysql中字符串后的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

删除字符串中空格后的所有内容

VB.Net 删除第三个连字符后的所有内容

SQL Server替换,删除特定字符后的所有内容

sh 删除最后一个字符实例后的所有内容

删除空格后的所有字符串[关闭]

如何删除 OLAP 维度成员的第一个空格后的所有字符