2010-08-26 2 views
0

Просто интересно, может ли кто-нибудь помочь мне со следующей проблемой.Редактировать текст в столбцах

У меня есть база данных в MySQL, и я использую PHPMyAdmin для взаимодействия с базой данных.

Так что в таблице example_table_name у меня есть два столбца product_item_short и product_item_long, в которых есть URL-адреса. Теперь имеется 3000 строк данных, и в качестве примера URL-адрес каждого начинается с data/image/someimage.png.

В обоих столбцах мне нужно удалить data/, и я хотел бы знать, как я мог это сделать в SQL.

Большое спасибо

ответ

0
UPDATE example_table 
SET product_item_short = SUBSTRING(product_item_short,6), 
    product_item_long = SUBSTRING(product_item_long,6); 
+0

Работал и благодарит за помощь. –

2

Вы можете использовать функцию SUBSTR():

UPDATE your_table 
SET product_item_short = SUBSTR(product_item_short, 6), 
     product_item_long = SUBSTR(product_item_long, 6); 

Тестовый пример:

CREATE TABLE your_table (
    id int, 
    product_item_short varchar(50), 
    product_item_long varchar(50) 
); 


INSERT INTO your_table VALUES (1, 'data/image/someimage.png',   'data/image/someimage.png'); 
INSERT INTO your_table VALUES (2, 'data/other-folder/someimage.png', 'data/other-folder/someimage.png'); 
INSERT INTO your_table VALUES (3, 'data/no-folder.png',    'data/no-folder.png'); 
INSERT INTO your_table VALUES (4, 'data/image/path/three-levels.png', 'data/image/path/three-levels.png'); 

Результат после UPDATE:

SELECT * FROM your_table; 
+------+-----------------------------+-----------------------------+ 
| id | product_item_short   | product_item_long   | 
+------+-----------------------------+-----------------------------+ 
| 1 | image/someimage.png   | image/someimage.png   | 
| 2 | other-folder/someimage.png | other-folder/someimage.png | 
| 3 | no-folder.png    | no-folder.png    | 
| 4 | image/path/three-levels.png | image/path/three-levels.png | 
+------+-----------------------------+-----------------------------+ 
4 rows in set (0.00 sec) 

UPDATE:

Если вам решение, которое устраняет первый каталог пути, будь то data/ или anything-else/, вы можете использовать функцию LOCATE() как @Frank's suggested в другой ответ:

UPDATE your_table 
SET product_item_short = SUBSTR(product_item_short, LOCATE('/', product_item_short) + 1), 
     product_item_long = SUBSTR(product_item_long, LOCATE('/', product_item_long) + 1); 
+0

Hi, Благодарим за это. Итак, если это URL-адрес изображения: data/image/someimage.jpg, если я использую вышеуказанный SQL, он будет лишать только данные/элемент? –

+0

@Bill: На самом деле это полосат первые 5 персонажей. Я обновил свой ответ с помощью тестового примера. Посмотрите, если это то, что вы ищете :) –

+0

Это фантастика, и я очень ценю вашу помощь :) –

1
UPDATE tablename 
SET product_item_short = REPLACE(product_item_short, 'data/image/someimage.png', 'newurl/something.png'); 
1

Если вы хотите быть более гибкими, чем то, что Даниил описал я В его ответе вы можете использовать что-то вроде

SUBSTR(product_item_short, LOCATE('/', product_item_short) + 1) 

, который отрезал бы все после первой косой черты.

+0

Хорошая идея. Однако обратите внимание, что ваши аргументы отменены. Это должно быть 'LOCATE ('/', product_item_short)'. Вам также не хватает закрывающейся скобки :) –

+0

@ Daniel Я отредактировал свой ответ, теперь это должно быть правильно. – Frank

+0

Я упомянул ваше решение в своем ответе ... +1 :) –

Смежные вопросы