使用正则表达式从图像中删除无效值



正在编写一个代码,其中我们存储图像,但有些图像以奇怪的字符结尾

类似于, %2C -x1 to x10 etc或更多,但总是以.jpg结束

如何使用regex将图像名称替换为有效名称

这是我的的一个例子

PCpaste_10_g,-X1,-X2,-X3
SNBar_NEW,-X1

他们可以一直到-X10

所以我想用regex来删除,and everything afterwards it

我试过使用replace,但每次只适用于一个项目

如果您的数据与需要获取的第一个comma之前的字符串一致,那么您可以尝试使用SUBSTRING_INDEX

让我们使用这个作为您的示例表&使用您的样本数据:

CREATE TABLE mytable (
val VARCHAR(255));
INSERT INTO mytable VALUES
('PCpaste_10_g,-X1,-X2,-X3.jpg'),
('SNBar_NEW,-X1.jpg');
val
PCpaste_10_g、-X1、-X2、-X3.jpg
SNBar_NEW,-X1.jpg

您可以使用LOCATE查找第一个出现的"quot;在字段中并且向左以获取直到第一个"-

SET @value := 'PCpaste_10_g,-X1,-X2,-X3';
SELECT CONCAT(LEFT(@value, LOCATE(',', @value) - 1), '.jpg');

或用于您的更新-

UPDATE <table>
SET image_name = CONCAT(LEFT(image_name, LOCATE(',', image_name) - 1), '.jpg')
WHERE image_name LIKE '%,%';

或者同时处理您的%2C-

UPDATE <table>
SET image_name = CASE
WHEN image_name LIKE '%,%'
THEN CONCAT(LEFT(image_name, LOCATE(',', image_name) - 1), '.jpg')
WHEN image_name LIKE '%%2C%'
THEN CONCAT(LEFT(image_name, LOCATE('%2C', image_name) - 1), '.jpg')
END
WHERE image_name LIKE '%,%'
OR image_name LIKE '%%2C%';

最新更新