Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Заменить несколько символов в пределах строки / 4 сообщений из 4, страница 1 из 1
26.07.2014, 01:03:26
    #38706439
smarton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить несколько символов в пределах строки
Имею строки следующего вида:
flycatcherfrogSte1.gif
FlipOutSte311.gif
carrotsweeperGC1.gif

Необходимо в каждой строке заменить значения 1.gif на .swf.
Строки содержат разное количество значений.
Искал функцию, которая позволяет заменить последние 5 символов на новые 4 символа.

Пробовал использовать UPDATE REPLACE, но функция не заменяет часть строки, а меняет все содержимое строки.
Код: sql
1.
UPDATE games SET flash = REPLACE(flash, ‘1.gif’, ‘.swf’);


Пробовал использовать UPDATE INSERT, но часть строки также не заменяет, а если использовать все значения строки - не подходит, так как у меня разное количество символов в строке.
Код: sql
1.
2.
UPDATE games SET flash = INSERT('1.gif', 1, 5, '.swf');
UPDATE games SET flash = INSERT('flycatcherfrogSte1.gif', 18, 5, '.swf');


Как быть? Что посоветуете?
...
Рейтинг: 0 / 0
26.07.2014, 01:55:03
    #38706443
smarton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить несколько символов в пределах строки
В общем, сделал эту задачу двумя запросами:
Код: sql
1.
2.
UPDATE se_games SET flash = SUBSTRING_INDEX(flash, '1.', 1);
UPDATE se_games SET flash = CONCAT(flash, '.swf');


Запросы можно объединить, но я не стал заморачиваться :)

Задача выполнена, но мне все еще интересны ваши более оптимальные варианты.
...
Рейтинг: 0 / 0
26.07.2014, 02:17:29
    #38706445
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить несколько символов в пределах строки
smartonСтроки содержат разное количество значений.это как?

smartonИскал функцию, которая позволяет заменить последние 5 символов на новые 4 символа.
Код: sql
1.
CONCAT(SUBSTR(flash,1,CHAR_LENGTH(flash)-5),'.swf')


smartonПробовал использовать UPDATE REPLACE, но функция не заменяет часть строки, а меняет все содержимое строки.
Код: sql
1.
UPDATE games SET flash = REPLACE(flash, ‘1.gif’, ‘.swf’);

Это должно нормально работать, если ‘1.gif’ не встречается в середине строк.

smartonВ общем, сделал эту задачу двумя запросами:
Код: sql
1.
2.
UPDATE se_games SET flash = SUBSTRING_INDEX(flash, '1.', 1);
UPDATE se_games SET flash = CONCAT(flash, '.swf');



Запросы можно объединить, но я не стал заморачиваться :)Объединить "в лоб":
Код: sql
1.
UPDATE se_games SET flash = CONCAT(SUBSTRING_INDEX(flash, '1.', 1), '.swf')
...
Рейтинг: 0 / 0
26.07.2014, 02:30:18
    #38706447
smarton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить несколько символов в пределах строки
miksoft, ух ты, столько сразу вариантов. Спасибо!
Мне больше всего нравится:
Код: sql
1.
CONCAT(SUBSTR(flash,1,CHAR_LENGTH(flash)-5),'.swf')


Это то, что я искал, но "недоискал".

miksoftsmartonСтроки содержат разное количество значений.это как?

Я имел в виду, что в одной строке у меня 22 символа, в другой 16 символов и т.д.
flycatcherfrogSte1.gif
FlipOutSte311.gif
carrotsweeperGC1.gif
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Заменить несколько символов в пределах строки / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]