За последние 24 часа нас посетили 42487 программистов и 1816 роботов. Сейчас ищут 838 программистов ...

Надо в записи заменить часть текста

Тема в разделе "MySQL", создана пользователем joost, 30 июл 2007.

  1. joost

    joost Guest

    Надо заменить 2006 на 2007
    в записях типа
    "Сегодня на дворе 2006. УРА!"

    update set `field`=preg_replace('2006','2007')
    что сделал неправильно в preg_replace('2006','2007')?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    [sql]`field` = REPLACE(`field`, '2006', '2007')[/sql]
     
  3. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    set field = replace (field, '2006', '2007')
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    1) чем отличается mysql от PHP?
    2) какие операторы для работы со строками есть в mysql и какие в PHP?
    3) какие параметры надо передавать функции preg_replace, откуда бы она ни взялась?
     
  5. joost

    joost Guest

    Затронутые ряды: 0 (Запрос занял 0.0004 сек)
    не заменяет
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Почему у меня всё ок?
    [sql]UPDATE `table` SET `field` = REPLACE(`field`, ' 2006', '2007')[/sql]
     
  7. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Sergey89
    Видимо, из-за этого :lol:
     
  8. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Dagdamor :D наверное. fixed
     
  9. joost

    joost Guest

    а если надо сделать так
    есть текст
    "Сейчас стоимост товара 100 руб., если в кредит брать у нас"
    допустим что мы незнаем что стоимость 100 а надо заменить "стоимост товара 100 руб., если в кредит" на "пробел"
    как при этом воспользоватся REPLACE ?
     
  10. joost

    joost Guest

    пробовал 100 руб. заменить "*" или "(.*)"
     
  11. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    1) регуляркой
    2) strpos, substr
     
  12. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    field=if(locate('сейчас стоимость',field),
    concat(left(field,locate('сейчас стоимость',field)+22),substring(field,localte(field,locate('руб',field,locate('сейчас стоимость',field)+22))
    ,field)


    что-то такого типа. синтаксис всех функций тестировать не буду.
     
  13. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    можно попробовать так...
    [sql]set field = concat(substring_index(field, ' ', 1), ' ', substring_index(field, ' ', -3))
    where field regexp '^Сейчас стоимост товара [0-9]+ руб\\., если в кредит брать у нас$'[/sql]
     
  14. joost

    joost Guest

    а в replace можно регулярки использовать?
    UPDATE `table` SET `field` = REPLACE(`field`, ' 2006', '2007')
    что можно использовать вместо REPLACE, что-бы можно было использовать регулярки?