正在编写一个代码,其中我们存储图像,但有些图像以奇怪的字符结尾
类似于, %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%';