За последние 24 часа нас посетили 19012 программистов и 1616 роботов. Сейчас ищет 721 программист ...

Удалить английские слова в записи

Тема в разделе "MySQL", создана пользователем joost, 23 сен 2009.

  1. joost

    joost Guest

    [sql]select replace(name,'[английские слова]','') from table[/sql]
    Как реализовать запрос?
     
  2. joost

    joost Guest

    Никак?
     
  3. joost

    joost Guest

    Есть в таблице такие записи
    Надо все что латинскими символами откинуть
    [sql]select distinct(replace(name,'[латинские символы]','') from table)[/sql]
    чем заменить
    PHP:
    1. '[латинские символы]'
    в запросе?
     
  4. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    тоже регулярки.
    и задача по прежнему непонятна, результат будет "Гарнитура -28 + -41" ?
     
  5. joost

    joost Guest

    Как определить позицию первого не кириличного символа в записи?
     
  6. joost

    joost Guest

    цифры учесть тоже надо!
     
  7. Darevill

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

    С нами с:
    20 сен 2009
    Сообщения:
    50
    Симпатии:
    0
    Если нужно оставить только русские слова, то
    Код (Text):
    1. $name = trim(preg_replace("/([^а-яА-Я\s]*)/", "", $name));
    Только не понятно что нужно получить в результате - список всех гарнитур по запросу "Гарнитура AD-666"?
     
  8. joost

    joost Guest

    Есть в таблице такие записи
    Надо все что латинскими символами откинуть
    Результат
     
  9. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    а также плюсы, минусы и т.п. а если дефис в названии?
     
  10. joost

    joost Guest

    да!

    счас задача сводится до "выбрать позицию первого латинского символа после как минимум одного пробела пробела"
    например
    Есть
    Результат
     
  11. joost

    joost Guest

    никак не решается задача?
    п/с проблема в том, что незнаю как получить символ из записи (строка варчар) не по номеру в строке, а по характеристике (например равно "а" или заглавная буква и т.д.)
     
  12. kostyl

    kostyl Guest

    joost
    да выбирай все и фильтруй английский средствами php либо заноси в разные части базы на разных языках и не парься....
     
  13. joost

    joost Guest

    надо через sql
    не решит задачу


    п/с проблема в том, что незнаю как получить символ из записи (строка варчар) не по номеру в строке, а по характеристике (например равно "а" или заглавная буква и т.д.)
     
  14. Darevill

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

    С нами с:
    20 сен 2009
    Сообщения:
    50
    Симпатии:
    0
    Если я правильно понял, то нужно из записей базы вычистить всё, кроме русских букв
    Например, из
    получить

    Можно сделать так:

    PHP:
    1.  
    2. $res = mysql_query("SELECT `id`, `name` FROM `table`");
    3. if (!mysql_error())
    4. {
    5.     while($row = mysql_fetch_assoc($res))
    6.     {
    7.         $name = trim(preg_replace("/([^а-яА-Я\s]*)/", "", $row['name']));
    8.         mysql_query("UPDATE `table` SET `name`='".$name."' WHERE `id`=".$row['id']);
    9.     }
    10. }
    11.  
     
  15. joost

    joost Guest

    Darevill
    Надо из
    получить
    sql запросом типа
    [sql]select distinct(replace(name,'[латинские символы]','') from table)[/sql]

    проблема в том, что незнаю чем заменить [латинские символы] в запросе
     
  16. Darevill

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

    С нами с:
    20 сен 2009
    Сообщения:
    50
    Симпатии:
    0
    Похоже на фильтр типа товаров в категории.
    Если так, то думаю запросом дело не решить, в MySQL есть регулярки, но только для поиска совпадений, замену строк регулярками MySQL делать не умеет.
     
  17. kostyl

    kostyl Guest

    Скажите пожалуйста, зачем это надо сделать именно запросом?