Редактировать текст в столбцах

0

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

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

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

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

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

Теги:
phpmyadmin

4 ответа

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 предложил в другом ответе:

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
    Привет, спасибо за это. Итак, если это URL-адрес изображения: data / image / someimage.jpg Если я использую приведенный выше SQL, то он удалит только данные / элемент?
  • 0
    @Bill: на самом деле он удалит первые 5 символов. Я обновил свой ответ тестовым примером. Проверьте, если это то, что вы ищете :)
Показать ещё 2 комментария
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 Я отредактировал свой ответ, теперь он должен быть правильным.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню