[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена части строки
Kusss
Мне нужно заменить 4 последних числа в строке.
Знаю что есть
UPDATE `table` SET REPLACE(поле, ‘строка для замены’, ‘чем заменяем’)

Но есть опасение, что может совпасть текст где-то в середине.
Посоветуете как быть .
redreem
дык, можно соорудить конструкцию из SUBSTRING + LENGTH + CONCAT
Миша
Синтаксис оператора REPLACE

_____________
Принимаю заказы, писать в ЛС
Миша
Проверил, работает.

UPDATE `table`  SET `test01` = REPLACE(`test01`, '1111', '6') WHERE `test01` LIKE '%1111';


_____________
Принимаю заказы, писать в ЛС
Kusss
Медведь
это не то.
Задача. Есть строка "0101880101" нужно заменить "0101" скажем на "0909"
Должно получиться следующее: "0101880909", а не "0909880909".
redreem
Цитата
дык, можно соорудить конструкцию из SUBSTRING + LENGTH + CONCAT

update table
set
test_field = CASE
WHEN
SUBSTRING(test_field, LENGTH(test_field) - 3, 4) = '0101' THEN CONCAT( SUBSTRING(test_field, 1, LENGTH(test_field) - 4), '0909' )
ELSE test_field
END

лентяй.
Миша
Цитата (Kusss @ 22.02.2016 - 15:34)
Медведь
это не то.
Задача. Есть строка "0101880101" нужно заменить "0101" скажем на "0909"
Должно получиться следующее: "0101880909", а не "0909880909".

Попробуй

UPDATE `table`  SET `test01` = REPLACE(`test01`, '0101', '0909') WHERE `test01` LIKE '%0101';


_____________
Принимаю заказы, писать в ЛС
redreem
Медведь

UPDATE `table`  SET `test01` = REPLACE(`test01`, '0101', '0909') WHERE `test01` LIKE '%0101';


строка 0101лорплодварпва0101
тоже попадет под твой LIKE
Миша
Цитата (redreem @ 22.02.2016 - 16:04)
строка 0101лорплодварпва0101
тоже попадет под твой LIKE

Да, REPLACE - не поддерживает регулярные выражения (

_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.