處理我們存盤影像的代碼,但一些影像以奇怪的字符結尾
喜歡, , -x1 to x10 etc或更多,但總是以 a 結尾.jpg
我如何正則運算式將影像名稱替換為有效名稱
這是我所擁有的一個例子
PCpaste_10_g,-X1,-X2,-X3
SNBar_NEW,-X1
他們可以走到-X10
所以我想洗掉正則運算式 ,and everything afterwards it
我嘗試使用replace,但一次只適用于一個專案
uj5u.com熱心網友回復:
如果您的資料與comma需要取的第一個字串之前的字串一致,那么您可以嘗試使用SUBSTRING_INDEX;
讓我們在您對表格進行采樣并使用您的示例資料時使用它:
CREATE TABLE mytable (
val VARCHAR(255));
INSERT INTO mytable VALUES
('PCpaste_10_g,-X1,-X2,-X3.jpg'),
('SNBar_NEW,-X1.jpg');
| 值 |
|---|
| PCpaste_10_g,-X1,-X2,-X3.jpg |
| SNBar_NEW,-X1.jpg |
然后首先在出現之前提取第一個字串comma:
SELECT SUBSTRING_INDEX(val,',',1) extracted
FROM mytable
回傳
| 提取的 |
|---|
| PCpaste_10_g |
| SNBar_NEW |
然后添加回來.jpg:
SELECT CONCAT(SUBSTRING_INDEX(val,',',1),'.jpg') extracted_combined
FROM mytable
如果您的影像擴展名不一致.jpg,您可以做另一個SUBSTRING_INDEX()來獲取擴展名,然后CONCAT()他們:
SELECT CONCAT(SUBSTRING_INDEX(val,',',1) ,'.',
SUBSTRING_INDEX(val,'.',-1)) Extracted_combined
FROM mytable;
演示小提琴
uj5u.com熱心網友回復:
您可以使用LOCATE查找欄位中第一次出現的“,”,并使用LEFT來獲取第一個“,”之前的所有內容 -
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 '%,%';
或同時處理您,的 -
UPDATE <table>
SET image_name = CASE
WHEN image_name LIKE '%,%'
THEN CONCAT(LEFT(image_name, LOCATE(',', image_name) - 1), '.jpg')
WHEN image_name LIKE '%\,%'
THEN CONCAT(LEFT(image_name, LOCATE(',', image_name) - 1), '.jpg')
END
WHERE image_name LIKE '%,%'
OR image_name LIKE '%\,%';
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417223.html
標籤:
上一篇:當行包含用戶時選擇所有行相關的行
